summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2016-10-01 07:32:32 +0200
committerMiklos Szeredi <mszeredi@redhat.com>2016-10-01 07:32:32 +0200
commitbcb6f6d2b9c299db32b20f4357c36a101e7f0293 (patch)
tree65dcb451a0853740d05a4eb6e1f3df1ce8b515f8
parentfuse: don't use ->d_time (diff)
downloadlinux-bcb6f6d2b9c299db32b20f4357c36a101e7f0293.tar.xz
linux-bcb6f6d2b9c299db32b20f4357c36a101e7f0293.zip
fuse: use timespec64
And check for valid nsec value before passing into timespec64_to_jiffies(). Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
-rw-r--r--fs/fuse/dir.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 45f704aaa57f..30d9dc976e61 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -63,11 +63,15 @@ static inline u64 fuse_dentry_time(struct dentry *entry)
/*
* Calculate the time in jiffies until a dentry/attributes are valid
*/
-static u64 time_to_jiffies(unsigned long sec, unsigned long nsec)
+static u64 time_to_jiffies(u64 sec, u32 nsec)
{
if (sec || nsec) {
- struct timespec ts = {sec, nsec};
- return get_jiffies_64() + timespec_to_jiffies(&ts);
+ struct timespec64 ts = {
+ sec,
+ max_t(u32, nsec, NSEC_PER_SEC - 1)
+ };
+
+ return get_jiffies_64() + timespec64_to_jiffies(&ts);
} else
return 0;
}