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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230706144954.qywfdakgk2dxlegh@quack3>
Date:   Thu, 6 Jul 2023 16:49:54 +0200
From:   Jan Kara <jack@...e.cz>
To:     Jeff Layton <jlayton@...nel.org>
Cc:     Christian Brauner <brauner@...nel.org>,
        Evgeniy Dushistov <dushistov@...l.ru>,
        Al Viro <viro@...iv.linux.org.uk>, Jan Kara <jack@...e.cz>,
        linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 80/92] ufs: convert to ctime accessor functions

On Wed 05-07-23 15:01:45, Jeff Layton wrote:
> In later patches, we're going to change how the inode's ctime field is
> used. Switch to using accessor functions instead of raw accesses of
> inode->i_ctime.
> 
> Signed-off-by: Jeff Layton <jlayton@...nel.org>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@...e.cz>

								Honza

> ---
>  fs/ufs/dir.c    |  6 +++---
>  fs/ufs/ialloc.c |  2 +-
>  fs/ufs/inode.c  | 23 +++++++++++++----------
>  fs/ufs/namei.c  |  8 ++++----
>  4 files changed, 21 insertions(+), 18 deletions(-)
> 
> diff --git a/fs/ufs/dir.c b/fs/ufs/dir.c
> index 379d75796a5c..fd57f03b6c93 100644
> --- a/fs/ufs/dir.c
> +++ b/fs/ufs/dir.c
> @@ -107,7 +107,7 @@ void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de,
>  	ufs_commit_chunk(page, pos, len);
>  	ufs_put_page(page);
>  	if (update_times)
> -		dir->i_mtime = dir->i_ctime = current_time(dir);
> +		dir->i_mtime = inode_set_ctime_current(dir);
>  	mark_inode_dirty(dir);
>  	ufs_handle_dirsync(dir);
>  }
> @@ -397,7 +397,7 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode)
>  	ufs_set_de_type(sb, de, inode->i_mode);
>  
>  	ufs_commit_chunk(page, pos, rec_len);
> -	dir->i_mtime = dir->i_ctime = current_time(dir);
> +	dir->i_mtime = inode_set_ctime_current(dir);
>  
>  	mark_inode_dirty(dir);
>  	err = ufs_handle_dirsync(dir);
> @@ -539,7 +539,7 @@ int ufs_delete_entry(struct inode *inode, struct ufs_dir_entry *dir,
>  		pde->d_reclen = cpu_to_fs16(sb, to - from);
>  	dir->d_ino = 0;
>  	ufs_commit_chunk(page, pos, to - from);
> -	inode->i_ctime = inode->i_mtime = current_time(inode);
> +	inode->i_mtime = inode_set_ctime_current(inode);
>  	mark_inode_dirty(inode);
>  	err = ufs_handle_dirsync(inode);
>  out:
> diff --git a/fs/ufs/ialloc.c b/fs/ufs/ialloc.c
> index 06bd84d555bd..a1e7bd9d1f98 100644
> --- a/fs/ufs/ialloc.c
> +++ b/fs/ufs/ialloc.c
> @@ -292,7 +292,7 @@ struct inode *ufs_new_inode(struct inode *dir, umode_t mode)
>  	inode_init_owner(&nop_mnt_idmap, inode, dir, mode);
>  	inode->i_blocks = 0;
>  	inode->i_generation = 0;
> -	inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
> +	inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
>  	ufsi->i_flags = UFS_I(dir)->i_flags;
>  	ufsi->i_lastfrag = 0;
>  	ufsi->i_shadow = 0;
> diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
> index a4246c83a8cd..21a4779a2de5 100644
> --- a/fs/ufs/inode.c
> +++ b/fs/ufs/inode.c
> @@ -296,7 +296,7 @@ ufs_inode_getfrag(struct inode *inode, unsigned index,
>  
>  	if (new)
>  		*new = 1;
> -	inode->i_ctime = current_time(inode);
> +	inode_set_ctime_current(inode);
>  	if (IS_SYNC(inode))
>  		ufs_sync_inode (inode);
>  	mark_inode_dirty(inode);
> @@ -378,7 +378,7 @@ ufs_inode_getblock(struct inode *inode, u64 ind_block,
>  	mark_buffer_dirty(bh);
>  	if (IS_SYNC(inode))
>  		sync_dirty_buffer(bh);
> -	inode->i_ctime = current_time(inode);
> +	inode_set_ctime_current(inode);
>  	mark_inode_dirty(inode);
>  out:
>  	brelse (bh);
> @@ -580,11 +580,12 @@ static int ufs1_read_inode(struct inode *inode, struct ufs_inode *ufs_inode)
>  
>  	inode->i_size = fs64_to_cpu(sb, ufs_inode->ui_size);
>  	inode->i_atime.tv_sec = (signed)fs32_to_cpu(sb, ufs_inode->ui_atime.tv_sec);
> -	inode->i_ctime.tv_sec = (signed)fs32_to_cpu(sb, ufs_inode->ui_ctime.tv_sec);
> +	inode_set_ctime(inode,
> +			(signed)fs32_to_cpu(sb, ufs_inode->ui_ctime.tv_sec),
> +			0);
>  	inode->i_mtime.tv_sec = (signed)fs32_to_cpu(sb, ufs_inode->ui_mtime.tv_sec);
>  	inode->i_mtime.tv_nsec = 0;
>  	inode->i_atime.tv_nsec = 0;
> -	inode->i_ctime.tv_nsec = 0;
>  	inode->i_blocks = fs32_to_cpu(sb, ufs_inode->ui_blocks);
>  	inode->i_generation = fs32_to_cpu(sb, ufs_inode->ui_gen);
>  	ufsi->i_flags = fs32_to_cpu(sb, ufs_inode->ui_flags);
> @@ -626,10 +627,10 @@ static int ufs2_read_inode(struct inode *inode, struct ufs2_inode *ufs2_inode)
>  
>  	inode->i_size = fs64_to_cpu(sb, ufs2_inode->ui_size);
>  	inode->i_atime.tv_sec = fs64_to_cpu(sb, ufs2_inode->ui_atime);
> -	inode->i_ctime.tv_sec = fs64_to_cpu(sb, ufs2_inode->ui_ctime);
> +	inode_set_ctime(inode, fs64_to_cpu(sb, ufs2_inode->ui_ctime),
> +			fs32_to_cpu(sb, ufs2_inode->ui_ctimensec));
>  	inode->i_mtime.tv_sec = fs64_to_cpu(sb, ufs2_inode->ui_mtime);
>  	inode->i_atime.tv_nsec = fs32_to_cpu(sb, ufs2_inode->ui_atimensec);
> -	inode->i_ctime.tv_nsec = fs32_to_cpu(sb, ufs2_inode->ui_ctimensec);
>  	inode->i_mtime.tv_nsec = fs32_to_cpu(sb, ufs2_inode->ui_mtimensec);
>  	inode->i_blocks = fs64_to_cpu(sb, ufs2_inode->ui_blocks);
>  	inode->i_generation = fs32_to_cpu(sb, ufs2_inode->ui_gen);
> @@ -726,7 +727,8 @@ static void ufs1_update_inode(struct inode *inode, struct ufs_inode *ufs_inode)
>  	ufs_inode->ui_size = cpu_to_fs64(sb, inode->i_size);
>  	ufs_inode->ui_atime.tv_sec = cpu_to_fs32(sb, inode->i_atime.tv_sec);
>  	ufs_inode->ui_atime.tv_usec = 0;
> -	ufs_inode->ui_ctime.tv_sec = cpu_to_fs32(sb, inode->i_ctime.tv_sec);
> +	ufs_inode->ui_ctime.tv_sec = cpu_to_fs32(sb,
> +						 inode_get_ctime(inode).tv_sec);
>  	ufs_inode->ui_ctime.tv_usec = 0;
>  	ufs_inode->ui_mtime.tv_sec = cpu_to_fs32(sb, inode->i_mtime.tv_sec);
>  	ufs_inode->ui_mtime.tv_usec = 0;
> @@ -770,8 +772,9 @@ static void ufs2_update_inode(struct inode *inode, struct ufs2_inode *ufs_inode)
>  	ufs_inode->ui_size = cpu_to_fs64(sb, inode->i_size);
>  	ufs_inode->ui_atime = cpu_to_fs64(sb, inode->i_atime.tv_sec);
>  	ufs_inode->ui_atimensec = cpu_to_fs32(sb, inode->i_atime.tv_nsec);
> -	ufs_inode->ui_ctime = cpu_to_fs64(sb, inode->i_ctime.tv_sec);
> -	ufs_inode->ui_ctimensec = cpu_to_fs32(sb, inode->i_ctime.tv_nsec);
> +	ufs_inode->ui_ctime = cpu_to_fs64(sb, inode_get_ctime(inode).tv_sec);
> +	ufs_inode->ui_ctimensec = cpu_to_fs32(sb,
> +					      inode_get_ctime(inode).tv_nsec);
>  	ufs_inode->ui_mtime = cpu_to_fs64(sb, inode->i_mtime.tv_sec);
>  	ufs_inode->ui_mtimensec = cpu_to_fs32(sb, inode->i_mtime.tv_nsec);
>  
> @@ -1205,7 +1208,7 @@ static int ufs_truncate(struct inode *inode, loff_t size)
>  	truncate_setsize(inode, size);
>  
>  	ufs_truncate_blocks(inode);
> -	inode->i_mtime = inode->i_ctime = current_time(inode);
> +	inode->i_mtime = inode_set_ctime_current(inode);
>  	mark_inode_dirty(inode);
>  out:
>  	UFSD("EXIT: err %d\n", err);
> diff --git a/fs/ufs/namei.c b/fs/ufs/namei.c
> index 36154b5aca6d..9cad29463791 100644
> --- a/fs/ufs/namei.c
> +++ b/fs/ufs/namei.c
> @@ -153,7 +153,7 @@ static int ufs_link (struct dentry * old_dentry, struct inode * dir,
>  	struct inode *inode = d_inode(old_dentry);
>  	int error;
>  
> -	inode->i_ctime = current_time(inode);
> +	inode_set_ctime_current(inode);
>  	inode_inc_link_count(inode);
>  	ihold(inode);
>  
> @@ -220,7 +220,7 @@ static int ufs_unlink(struct inode *dir, struct dentry *dentry)
>  	if (err)
>  		goto out;
>  
> -	inode->i_ctime = dir->i_ctime;
> +	inode_set_ctime_to_ts(inode, inode_get_ctime(dir));
>  	inode_dec_link_count(inode);
>  	err = 0;
>  out:
> @@ -282,7 +282,7 @@ static int ufs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
>  		if (!new_de)
>  			goto out_dir;
>  		ufs_set_link(new_dir, new_de, new_page, old_inode, 1);
> -		new_inode->i_ctime = current_time(new_inode);
> +		inode_set_ctime_current(new_inode);
>  		if (dir_de)
>  			drop_nlink(new_inode);
>  		inode_dec_link_count(new_inode);
> @@ -298,7 +298,7 @@ static int ufs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
>  	 * Like most other Unix systems, set the ctime for inodes on a
>   	 * rename.
>  	 */
> -	old_inode->i_ctime = current_time(old_inode);
> +	inode_set_ctime_current(old_inode);
>  
>  	ufs_delete_entry(old_dir, old_de, old_page);
>  	mark_inode_dirty(old_inode);
> -- 
> 2.41.0
> 
-- 
Jan Kara <jack@...e.com>
SUSE Labs, CR

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ