diff options
author | David Sheets <david.sheets@docker.com> | 2017-01-13 16:58:30 +0100 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2017-01-13 17:20:47 +0100 |
commit | 210675270caa33253e4c33f3c5e657e7d6060812 (patch) | |
tree | ca9b10adc7030707f1c7f010e48388efdde0d6fa | |
parent | fuse: clear FR_PENDING flag when moving requests out of pending queue (diff) | |
download | linux-210675270caa33253e4c33f3c5e657e7d6060812.tar.xz linux-210675270caa33253e4c33f3c5e657e7d6060812.zip |
fuse: fix time_to_jiffies nsec sanity check
Commit bcb6f6d2b9c2 ("fuse: use timespec64") introduced clamped nsec values
in time_to_jiffies but used the max of nsec and NSEC_PER_SEC - 1 instead of
the min. Because of this, dentries would stay in the cache longer than
requested and go stale in scenarios that relied on their timely eviction.
Fixes: bcb6f6d2b9c2 ("fuse: use timespec64")
Signed-off-by: David Sheets <dsheets@docker.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Cc: <stable@vger.kernel.org> # 4.9
-rw-r--r-- | fs/fuse/dir.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 1f7c732f32b0..811fd8929a18 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -68,7 +68,7 @@ static u64 time_to_jiffies(u64 sec, u32 nsec) if (sec || nsec) { struct timespec64 ts = { sec, - max_t(u32, nsec, NSEC_PER_SEC - 1) + min_t(u32, nsec, NSEC_PER_SEC - 1) }; return get_jiffies_64() + timespec64_to_jiffies(&ts); |