lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1452144972-15802-13-git-send-email-deepa.kernel@gmail.com>
Date:	Wed,  6 Jan 2016 21:36:09 -0800
From:	Deepa Dinamani <deepa.kernel@...il.com>
To:	linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org,
	y2038@...ts.linaro.org
Subject: [RFC 12/15] vfs: remove inode_timespec and timespec references

Substitute inode_timespec aliases with timespec64.
Since CONFIG_FS_USES_64BIT_TIME is enabled, internally
all inode_timespec references are using timespec64
already.

Signed-off-by: Deepa Dinamani <deepa.kernel@...il.com>
---
 fs/attr.c            |  2 +-
 fs/bad_inode.c       |  2 +-
 fs/binfmt_misc.c     |  2 +-
 fs/inode.c           | 36 ++++++++++++++++++------------------
 fs/libfs.c           | 12 ++++++------
 fs/locks.c           |  2 +-
 fs/nsfs.c            |  2 +-
 fs/pipe.c            |  2 +-
 fs/utimes.c          |  4 ++--
 include/linux/fs.h   | 24 +++++++++---------------
 include/linux/stat.h |  6 +++---
 11 files changed, 44 insertions(+), 50 deletions(-)

diff --git a/fs/attr.c b/fs/attr.c
index 4156239..ec5e9ad 100644
--- a/fs/attr.c
+++ b/fs/attr.c
@@ -192,7 +192,7 @@ int notify_change(struct dentry * dentry, struct iattr * attr, struct inode **de
 	struct inode *inode = dentry->d_inode;
 	umode_t mode = inode->i_mode;
 	int error;
-	struct inode_timespec now;
+	struct timespec64 now;
 	unsigned int ia_valid = attr->ia_valid;
 
 	WARN_ON_ONCE(!mutex_is_locked(&inode->i_mutex));
diff --git a/fs/bad_inode.c b/fs/bad_inode.c
index 3c51e22..2a8daef 100644
--- a/fs/bad_inode.c
+++ b/fs/bad_inode.c
@@ -169,7 +169,7 @@ static const struct inode_operations bad_inode_ops =
  
 void make_bad_inode(struct inode *inode)
 {
-	struct inode_timespec now;
+	struct timespec64 now;
 
 	remove_inode_hash(inode);
 
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
index 4fd4437..c58ecb7 100644
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -562,7 +562,7 @@ static void entry_status(Node *e, char *page)
 static struct inode *bm_get_inode(struct super_block *sb, int mode)
 {
 	struct inode *inode = new_inode(sb);
-	struct inode_timespec now;
+	struct timespec64 now;
 
 	if (inode) {
 		inode->i_ino = get_next_ino();
diff --git a/fs/inode.c b/fs/inode.c
index d3d64dc..86218f6 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -1532,12 +1532,12 @@ EXPORT_SYMBOL(bmap);
  * passed since the last atime update.
  */
 static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
-			     struct inode_timespec now)
+			     struct timespec64 now)
 {
 
-	struct inode_timespec ctime;
-	struct inode_timespec mtime;
-	struct inode_timespec atime;
+	struct timespec64 ctime;
+	struct timespec64 mtime;
+	struct timespec64 atime;
 
 	if (!(mnt->mnt_flags & MNT_RELATIME))
 		return 1;
@@ -1549,12 +1549,12 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
 	/*
 	 * Is mtime younger than atime? If yes, update atime:
 	 */
-	if (inode_timespec_compare(&mtime, &atime) >= 0)
+	if (timespec64_compare(&mtime, &atime) >= 0)
 		return 1;
 	/*
 	 * Is ctime younger than atime? If yes, update atime:
 	 */
-	if (inode_timespec_compare(&ctime, &atime) >= 0)
+	if (timespec64_compare(&ctime, &atime) >= 0)
 		return 1;
 
 	/*
@@ -1569,7 +1569,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
 	return 0;
 }
 
-int generic_update_time(struct inode *inode, struct inode_timespec *time,
+int generic_update_time(struct inode *inode, struct timespec64 *time,
 			int flags)
 {
 	int iflags = I_DIRTY_TIME;
@@ -1594,10 +1594,10 @@ EXPORT_SYMBOL(generic_update_time);
  * This does the actual work of updating an inodes time or version.  Must have
  * had called mnt_want_write() before calling this.
  */
-static int update_time(struct inode *inode, struct inode_timespec *time,
+static int update_time(struct inode *inode, struct timespec64 *time,
 		       int flags)
 {
-	int (*update_time)(struct inode *, struct inode_timespec *, int);
+	int (*update_time)(struct inode *, struct timespec64 *, int);
 
 	update_time = inode->i_op->update_time ? inode->i_op->update_time :
 		generic_update_time;
@@ -1617,8 +1617,8 @@ static int update_time(struct inode *inode, struct inode_timespec *time,
 bool atime_needs_update(const struct path *path, struct inode *inode)
 {
 	struct vfsmount *mnt = path->mnt;
-	struct inode_timespec now;
-	struct inode_timespec atime;
+	struct timespec64 now;
+	struct timespec64 atime;
 
 	if (inode->i_flags & S_NOATIME)
 		return false;
@@ -1637,7 +1637,7 @@ bool atime_needs_update(const struct path *path, struct inode *inode)
 		return false;
 
 	atime = VFS_INODE_GET_XTIME(i_atime, inode);
-	if (inode_timespec_equal(&atime, &now))
+	if (timespec64_equal(&atime, &now))
 		return false;
 
 	return true;
@@ -1647,7 +1647,7 @@ void touch_atime(const struct path *path)
 {
 	struct vfsmount *mnt = path->mnt;
 	struct inode *inode = d_inode(path->dentry);
-	struct inode_timespec now;
+	struct timespec64 now;
 
 	if (!atime_needs_update(path, inode))
 		return;
@@ -1782,9 +1782,9 @@ EXPORT_SYMBOL(file_remove_privs);
 int file_update_time(struct file *file)
 {
 	struct inode *inode = file_inode(file);
-	struct inode_timespec now;
-	struct inode_timespec mtime;
-	struct inode_timespec ctime;
+	struct timespec64 now;
+	struct timespec64 mtime;
+	struct timespec64 ctime;
 
 	int sync_it = 0;
 	int ret;
@@ -1798,10 +1798,10 @@ int file_update_time(struct file *file)
 	mtime = VFS_INODE_GET_XTIME(i_mtime, inode);
 	ctime = VFS_INODE_GET_XTIME(i_ctime, inode);
 
-	if (!inode_timespec_equal(&mtime, &now))
+	if (!timespec64_equal(&mtime, &now))
 		sync_it = S_MTIME;
 
-	if (!inode_timespec_equal(&ctime, &now))
+	if (!timespec64_equal(&ctime, &now))
 		sync_it |= S_CTIME;
 
 	if (IS_I_VERSION(inode))
diff --git a/fs/libfs.c b/fs/libfs.c
index 5a0c7c2..ffa9e65 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -216,7 +216,7 @@ struct dentry *mount_pseudo(struct file_system_type *fs_type, char *name,
 	struct dentry *dentry;
 	struct inode *root;
 	struct qstr d_name = QSTR_INIT(name, strlen(name));
-	struct inode_timespec now;
+	struct timespec64 now;
 
 	s = sget(fs_type, NULL, set_anon_super, MS_NOUSER, NULL);
 	if (IS_ERR(s))
@@ -274,7 +274,7 @@ EXPORT_SYMBOL(simple_open);
 int simple_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
 {
 	struct inode *inode = d_inode(old_dentry);
-	struct inode_timespec now = current_fs_time(inode->i_sb);
+	struct timespec64 now = current_fs_time(inode->i_sb);
 
 	VFS_INODE_SET_XTIME(i_ctime, inode, now);
 	VFS_INODE_SET_XTIME(i_mtime, dir, now);
@@ -311,7 +311,7 @@ EXPORT_SYMBOL(simple_empty);
 int simple_unlink(struct inode *dir, struct dentry *dentry)
 {
 	struct inode *inode = d_inode(dentry);
-	struct inode_timespec now = current_fs_time(inode->i_sb);
+	struct timespec64 now = current_fs_time(inode->i_sb);
 
 	VFS_INODE_SET_XTIME(i_ctime, inode, now);
 	VFS_INODE_SET_XTIME(i_mtime, dir, now);
@@ -339,7 +339,7 @@ int simple_rename(struct inode *old_dir, struct dentry *old_dentry,
 {
 	struct inode *inode = d_inode(old_dentry);
 	int they_are_dirs = d_is_dir(old_dentry);
-	struct inode_timespec now;
+	struct timespec64 now;
 
 	if (!simple_empty(new_dentry))
 		return -ENOTEMPTY;
@@ -495,7 +495,7 @@ int simple_fill_super(struct super_block *s, unsigned long magic,
 	struct inode *inode;
 	struct dentry *root;
 	struct dentry *dentry;
-	struct inode_timespec now;
+	struct timespec64 now;
 	int i;
 
 	s->s_blocksize = PAGE_CACHE_SIZE;
@@ -1080,7 +1080,7 @@ struct inode *alloc_anon_inode(struct super_block *s)
 		.set_page_dirty = anon_set_page_dirty,
 	};
 	struct inode *inode = new_inode_pseudo(s);
-	struct inode_timespec now;
+	struct timespec64 now;
 
 	if (!inode)
 		return ERR_PTR(-ENOMEM);
diff --git a/fs/locks.c b/fs/locks.c
index 2b818eb..ccf9c23 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -1491,7 +1491,7 @@ EXPORT_SYMBOL(__break_lease);
  * exclusive leases.  The justification is that if someone has an
  * exclusive lease, then they could be modifying it.
  */
-void lease_get_mtime(struct inode *inode, struct inode_timespec *time)
+void lease_get_mtime(struct inode *inode, struct timespec64 *time)
 {
 	bool has_lease = false;
 	struct file_lock_context *ctx;
diff --git a/fs/nsfs.c b/fs/nsfs.c
index a079fc9..e9012b5 100644
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -51,7 +51,7 @@ void *ns_get_path(struct path *path, struct task_struct *task,
 	struct qstr qname = { .name = "", };
 	struct dentry *dentry;
 	struct inode *inode;
-	struct inode_timespec now;
+	struct timespec64 now;
 	struct ns_common *ns;
 	unsigned long d;
 
diff --git a/fs/pipe.c b/fs/pipe.c
index 5d414a3..3bcb870 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -637,7 +637,7 @@ static struct inode * get_pipe_inode(void)
 {
 	struct inode *inode = new_inode_pseudo(pipe_mnt->mnt_sb);
 	struct pipe_inode_info *pipe;
-	struct inode_timespec now;
+	struct timespec64 now;
 
 	if (!inode)
 		goto fail_inode;
diff --git a/fs/utimes.c b/fs/utimes.c
index c23c8e6..6c0d208 100644
--- a/fs/utimes.c
+++ b/fs/utimes.c
@@ -48,7 +48,7 @@ static bool nsec_valid(long nsec)
 	return nsec >= 0 && nsec <= 999999999;
 }
 
-static int utimes_common(struct path *path, struct inode_timespec *times)
+static int utimes_common(struct path *path, struct timespec64 *times)
 {
 	int error;
 	struct iattr newattrs;
@@ -135,7 +135,7 @@ out:
  * Else, update from *times, must be owner or super user.
  */
 long do_utimes(int dfd, const char __user *filename,
-	       struct inode_timespec *times,
+	       struct timespec64 *times,
 	       int flags)
 {
 	int error = -EINVAL;
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 5112bc2..4a754a2 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -249,9 +249,9 @@ struct iattr {
 	kuid_t			ia_uid;
 	kgid_t			ia_gid;
 	loff_t			ia_size;
-	struct inode_timespec	ia_atime;
-	struct inode_timespec	ia_mtime;
-	struct inode_timespec	ia_ctime;
+	struct timespec64	ia_atime;
+	struct timespec64	ia_mtime;
+	struct timespec64	ia_ctime;
 
 	/*
 	 * Not an attribute, but an auxiliary info for filesystems wanting to
@@ -616,18 +616,12 @@ struct inode {
 	};
 	dev_t			i_rdev;
 	loff_t			i_size;
-#ifdef CONFIG_FS_USES_64BIT_TIME
 	time64_t		i_atime_sec;
 	time64_t		i_mtime_sec;
 	time64_t		i_ctime_sec;
 	s32			i_atime_nsec;
 	s32			i_mtime_nsec;
 	s32			i_ctime_nsec;
-#else
-	struct timespec		i_atime;
-	struct timespec		i_mtime;
-	struct timespec		i_ctime;
-#endif
 	spinlock_t		i_lock;	/* i_blocks, i_bytes, maybe i_size */
 	unsigned short          i_bytes;
 	unsigned int		i_blkbits;
@@ -727,7 +721,7 @@ struct inode {
 
 #define VFS_INODE_SWAP_XTIME(xtime, inode1, inode2)		\
 	do {							\
-		struct inode_timespec __ts =			\
+		struct timespec64 __ts =			\
 			VFS_INODE_GET_XTIME(xtime, inode1);	\
 		VFS_INODE_SET_XTIME(xtime, inode1,		\
 			VFS_INODE_GET_XTIME(xtime, inode2));	\
@@ -1448,11 +1442,11 @@ struct super_block {
 
 #endif
 
-extern int is_fs_timestamp_bad(struct inode_timespec ts);
-extern struct inode_timespec current_fs_time(struct super_block *sb);
-extern struct inode_timespec current_fs_time_sec(struct super_block *sb);
-extern struct inode_timespec
-fs_time_trunc(struct inode_timespec ts, struct super_block *sb);
+extern int is_fs_timestamp_bad(struct timespec64 ts);
+extern struct timespec64 current_fs_time(struct super_block *sb);
+extern struct timespec64 current_fs_time_sec(struct super_block *sb);
+extern struct timespec64
+fs_time_trunc(struct timespec64 ts, struct super_block *sb);
 
 /*
  * Snapshotting support.
diff --git a/include/linux/stat.h b/include/linux/stat.h
index 559983f..5561337 100644
--- a/include/linux/stat.h
+++ b/include/linux/stat.h
@@ -27,9 +27,9 @@ struct kstat {
 	kgid_t		gid;
 	dev_t		rdev;
 	loff_t		size;
-	struct inode_timespec	atime;
-	struct inode_timespec	mtime;
-	struct inode_timespec	ctime;
+	struct timespec64	atime;
+	struct timespec64	mtime;
+	struct timespec64	ctime;
 	unsigned long	blksize;
 	unsigned long long	blocks;
 };
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ