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: <20230706110313.kxiesbruvzrdsxzo@quack3>
Date:   Thu, 6 Jul 2023 13:03:13 +0200
From:   Jan Kara <jack@...e.cz>
To:     Jeff Layton <jlayton@...nel.org>
Cc:     Christian Brauner <brauner@...nel.org>, Jan Kara <jack@...e.com>,
        Al Viro <viro@...iv.linux.org.uk>, Jan Kara <jack@...e.cz>,
        linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
        linux-ext4@...r.kernel.org
Subject: Re: [PATCH v2 41/92] ext2: convert to ctime accessor functions

On Wed 05-07-23 15:01:06, 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/ext2/acl.c    |  2 +-
>  fs/ext2/dir.c    |  6 +++---
>  fs/ext2/ialloc.c |  2 +-
>  fs/ext2/inode.c  | 10 +++++-----
>  fs/ext2/ioctl.c  |  4 ++--
>  fs/ext2/namei.c  |  8 ++++----
>  fs/ext2/super.c  |  2 +-
>  fs/ext2/xattr.c  |  2 +-
>  8 files changed, 18 insertions(+), 18 deletions(-)
> 
> diff --git a/fs/ext2/acl.c b/fs/ext2/acl.c
> index 82b17d7fc93f..7e54c31589c7 100644
> --- a/fs/ext2/acl.c
> +++ b/fs/ext2/acl.c
> @@ -237,7 +237,7 @@ ext2_set_acl(struct mnt_idmap *idmap, struct dentry *dentry,
>  	error = __ext2_set_acl(inode, acl, type);
>  	if (!error && update_mode) {
>  		inode->i_mode = mode;
> -		inode->i_ctime = current_time(inode);
> +		inode_set_ctime_current(inode);
>  		mark_inode_dirty(inode);
>  	}
>  	return error;
> diff --git a/fs/ext2/dir.c b/fs/ext2/dir.c
> index 42db804794bd..b335f17f682f 100644
> --- a/fs/ext2/dir.c
> +++ b/fs/ext2/dir.c
> @@ -468,7 +468,7 @@ int ext2_set_link(struct inode *dir, struct ext2_dir_entry_2 *de,
>  	ext2_set_de_type(de, inode);
>  	ext2_commit_chunk(page, pos, len);
>  	if (update_times)
> -		dir->i_mtime = dir->i_ctime = current_time(dir);
> +		dir->i_mtime = inode_set_ctime_current(dir);
>  	EXT2_I(dir)->i_flags &= ~EXT2_BTREE_FL;
>  	mark_inode_dirty(dir);
>  	return ext2_handle_dirsync(dir);
> @@ -555,7 +555,7 @@ int ext2_add_link (struct dentry *dentry, struct inode *inode)
>  	de->inode = cpu_to_le32(inode->i_ino);
>  	ext2_set_de_type (de, inode);
>  	ext2_commit_chunk(page, pos, rec_len);
> -	dir->i_mtime = dir->i_ctime = current_time(dir);
> +	dir->i_mtime = inode_set_ctime_current(dir);
>  	EXT2_I(dir)->i_flags &= ~EXT2_BTREE_FL;
>  	mark_inode_dirty(dir);
>  	err = ext2_handle_dirsync(dir);
> @@ -606,7 +606,7 @@ int ext2_delete_entry(struct ext2_dir_entry_2 *dir, struct page *page)
>  		pde->rec_len = ext2_rec_len_to_disk(to - from);
>  	dir->inode = 0;
>  	ext2_commit_chunk(page, pos, to - from);
> -	inode->i_ctime = inode->i_mtime = current_time(inode);
> +	inode->i_mtime = inode_set_ctime_current(inode);
>  	EXT2_I(inode)->i_flags &= ~EXT2_BTREE_FL;
>  	mark_inode_dirty(inode);
>  	return ext2_handle_dirsync(inode);
> diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
> index 34cd5dc1da23..c24d0de95a83 100644
> --- a/fs/ext2/ialloc.c
> +++ b/fs/ext2/ialloc.c
> @@ -546,7 +546,7 @@ struct inode *ext2_new_inode(struct inode *dir, umode_t mode,
>  
>  	inode->i_ino = ino;
>  	inode->i_blocks = 0;
> -	inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
> +	inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
>  	memset(ei->i_data, 0, sizeof(ei->i_data));
>  	ei->i_flags =
>  		ext2_mask_flags(mode, EXT2_I(dir)->i_flags & EXT2_FL_INHERITED);
> diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
> index 75983215c7a1..1259995977d2 100644
> --- a/fs/ext2/inode.c
> +++ b/fs/ext2/inode.c
> @@ -595,7 +595,7 @@ static void ext2_splice_branch(struct inode *inode,
>  	if (where->bh)
>  		mark_buffer_dirty_inode(where->bh, inode);
>  
> -	inode->i_ctime = current_time(inode);
> +	inode_set_ctime_current(inode);
>  	mark_inode_dirty(inode);
>  }
>  
> @@ -1287,7 +1287,7 @@ static int ext2_setsize(struct inode *inode, loff_t newsize)
>  	__ext2_truncate_blocks(inode, newsize);
>  	filemap_invalidate_unlock(inode->i_mapping);
>  
> -	inode->i_mtime = inode->i_ctime = current_time(inode);
> +	inode->i_mtime = inode_set_ctime_current(inode);
>  	if (inode_needs_sync(inode)) {
>  		sync_mapping_buffers(inode->i_mapping);
>  		sync_inode_metadata(inode, 1);
> @@ -1409,9 +1409,9 @@ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
>  	set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
>  	inode->i_size = le32_to_cpu(raw_inode->i_size);
>  	inode->i_atime.tv_sec = (signed)le32_to_cpu(raw_inode->i_atime);
> -	inode->i_ctime.tv_sec = (signed)le32_to_cpu(raw_inode->i_ctime);
> +	inode_set_ctime(inode, (signed)le32_to_cpu(raw_inode->i_ctime), 0);
>  	inode->i_mtime.tv_sec = (signed)le32_to_cpu(raw_inode->i_mtime);
> -	inode->i_atime.tv_nsec = inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec = 0;
> +	inode->i_atime.tv_nsec = inode->i_mtime.tv_nsec = 0;
>  	ei->i_dtime = le32_to_cpu(raw_inode->i_dtime);
>  	/* We now have enough fields to check if the inode was active or not.
>  	 * This is needed because nfsd might try to access dead inodes
> @@ -1541,7 +1541,7 @@ static int __ext2_write_inode(struct inode *inode, int do_sync)
>  	raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
>  	raw_inode->i_size = cpu_to_le32(inode->i_size);
>  	raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec);
> -	raw_inode->i_ctime = cpu_to_le32(inode->i_ctime.tv_sec);
> +	raw_inode->i_ctime = cpu_to_le32(inode_get_ctime(inode).tv_sec);
>  	raw_inode->i_mtime = cpu_to_le32(inode->i_mtime.tv_sec);
>  
>  	raw_inode->i_blocks = cpu_to_le32(inode->i_blocks);
> diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c
> index cc87d413eb43..44e04484e570 100644
> --- a/fs/ext2/ioctl.c
> +++ b/fs/ext2/ioctl.c
> @@ -44,7 +44,7 @@ int ext2_fileattr_set(struct mnt_idmap *idmap,
>  		(fa->flags & EXT2_FL_USER_MODIFIABLE);
>  
>  	ext2_set_inode_flags(inode);
> -	inode->i_ctime = current_time(inode);
> +	inode_set_ctime_current(inode);
>  	mark_inode_dirty(inode);
>  
>  	return 0;
> @@ -77,7 +77,7 @@ long ext2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
>  		}
>  
>  		inode_lock(inode);
> -		inode->i_ctime = current_time(inode);
> +		inode_set_ctime_current(inode);
>  		inode->i_generation = generation;
>  		inode_unlock(inode);
>  
> diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
> index 937dd8f60f96..059517068adc 100644
> --- a/fs/ext2/namei.c
> +++ b/fs/ext2/namei.c
> @@ -211,7 +211,7 @@ static int ext2_link (struct dentry * old_dentry, struct inode * dir,
>  	if (err)
>  		return err;
>  
> -	inode->i_ctime = current_time(inode);
> +	inode_set_ctime_current(inode);
>  	inode_inc_link_count(inode);
>  	ihold(inode);
>  
> @@ -291,7 +291,7 @@ static int ext2_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:
> @@ -367,7 +367,7 @@ static int ext2_rename (struct mnt_idmap * idmap,
>  		ext2_put_page(new_page, new_de);
>  		if (err)
>  			goto out_dir;
> -		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);
> @@ -383,7 +383,7 @@ static int ext2_rename (struct mnt_idmap * idmap,
>  	 * 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);
>  	mark_inode_dirty(old_inode);
>  
>  	err = ext2_delete_entry(old_de, old_page);
> diff --git a/fs/ext2/super.c b/fs/ext2/super.c
> index 2959afc7541c..aaf3e3e88cb2 100644
> --- a/fs/ext2/super.c
> +++ b/fs/ext2/super.c
> @@ -1572,7 +1572,7 @@ static ssize_t ext2_quota_write(struct super_block *sb, int type,
>  	if (inode->i_size < off+len-towrite)
>  		i_size_write(inode, off+len-towrite);
>  	inode_inc_iversion(inode);
> -	inode->i_mtime = inode->i_ctime = current_time(inode);
> +	inode->i_mtime = inode_set_ctime_current(inode);
>  	mark_inode_dirty(inode);
>  	return len - towrite;
>  }
> diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
> index 8906ba479aaf..1c9187188d68 100644
> --- a/fs/ext2/xattr.c
> +++ b/fs/ext2/xattr.c
> @@ -773,7 +773,7 @@ ext2_xattr_set2(struct inode *inode, struct buffer_head *old_bh,
>  
>  	/* Update the inode. */
>  	EXT2_I(inode)->i_file_acl = new_bh ? new_bh->b_blocknr : 0;
> -	inode->i_ctime = current_time(inode);
> +	inode_set_ctime_current(inode);
>  	if (IS_SYNC(inode)) {
>  		error = sync_inode_metadata(inode, 1);
>  		/* In case sync failed due to ENOSPC the inode was actually
> -- 
> 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