summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sheets <david.sheets@docker.com>2017-01-13 16:58:30 +0100
committerMiklos Szeredi <mszeredi@redhat.com>2017-01-13 17:20:47 +0100
commit210675270caa33253e4c33f3c5e657e7d6060812 (patch)
treeca9b10adc7030707f1c7f010e48388efdde0d6fa
parentfuse: clear FR_PENDING flag when moving requests out of pending queue (diff)
downloadlinux-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.c2
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);