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]
Date:   Mon, 23 Apr 2018 16:04:52 +0200
From:   Jan Kara <jack@...e.cz>
To:     Amir Goldstein <amir73il@...il.com>
Cc:     Theodore Tso <tytso@....edu>, Jan Kara <jack@...e.cz>,
        linux-ext4@...r.kernel.org
Subject: Re: [PATCH v2 2/3] ext4: factor out helper ext4_sample_last_mounted()

On Sun 22-04-18 18:10:58, Amir Goldstein wrote:
> Signed-off-by: Amir Goldstein <amir73il@...il.com>

Looks good to me. You can add:

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

								Honza

> ---
>  fs/ext4/file.c | 82 ++++++++++++++++++++++++++++++++--------------------------
>  1 file changed, 46 insertions(+), 36 deletions(-)
> 
> diff --git a/fs/ext4/file.c b/fs/ext4/file.c
> index fb6f023622fe..065e95bb7186 100644
> --- a/fs/ext4/file.c
> +++ b/fs/ext4/file.c
> @@ -380,50 +380,60 @@ static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma)
>  	return 0;
>  }
>  
> -static int ext4_file_open(struct inode * inode, struct file * filp)
> +static int ext4_sample_last_mounted(struct super_block *sb,
> +				    struct vfsmount *mnt)
>  {
> -	struct super_block *sb = inode->i_sb;
> -	struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
> -	struct vfsmount *mnt = filp->f_path.mnt;
> +	struct ext4_sb_info *sbi = EXT4_SB(sb);
>  	struct path path;
>  	char buf[64], *cp;
> +	handle_t *handle;
> +	int err;
> +
> +	if (likely(sbi->s_mount_flags & EXT4_MF_MNTDIR_SAMPLED))
> +		return 0;
> +
> +	if (sb_rdonly(sb))
> +		return 0;
> +
> +	sbi->s_mount_flags |= EXT4_MF_MNTDIR_SAMPLED;
> +	/*
> +	 * Sample where the filesystem has been mounted and
> +	 * store it in the superblock for sysadmin convenience
> +	 * when trying to sort through large numbers of block
> +	 * devices or filesystem images.
> +	 */
> +	memset(buf, 0, sizeof(buf));
> +	path.mnt = mnt;
> +	path.dentry = mnt->mnt_root;
> +	cp = d_path(&path, buf, sizeof(buf));
> +	if (IS_ERR(cp))
> +		return 0;
> +
> +	handle = ext4_journal_start_sb(sb, EXT4_HT_MISC, 1);
> +	if (IS_ERR(handle))
> +		return PTR_ERR(handle);
> +	BUFFER_TRACE(sbi->s_sbh, "get_write_access");
> +	err = ext4_journal_get_write_access(handle, sbi->s_sbh);
> +	if (err)
> +		goto out;
> +	strlcpy(sbi->s_es->s_last_mounted, cp,
> +		sizeof(sbi->s_es->s_last_mounted));
> +	ext4_handle_dirty_super(handle, sb);
> +out:
> +	ext4_journal_stop(handle);
> +	return err;
> +}
> +
> +static int ext4_file_open(struct inode * inode, struct file * filp)
> +{
>  	int ret;
>  
>  	if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb))))
>  		return -EIO;
>  
> -	if (unlikely(!(sbi->s_mount_flags & EXT4_MF_MNTDIR_SAMPLED) &&
> -		     !sb_rdonly(sb))) {
> -		sbi->s_mount_flags |= EXT4_MF_MNTDIR_SAMPLED;
> -		/*
> -		 * Sample where the filesystem has been mounted and
> -		 * store it in the superblock for sysadmin convenience
> -		 * when trying to sort through large numbers of block
> -		 * devices or filesystem images.
> -		 */
> -		memset(buf, 0, sizeof(buf));
> -		path.mnt = mnt;
> -		path.dentry = mnt->mnt_root;
> -		cp = d_path(&path, buf, sizeof(buf));
> -		if (!IS_ERR(cp)) {
> -			handle_t *handle;
> -			int err;
> -
> -			handle = ext4_journal_start_sb(sb, EXT4_HT_MISC, 1);
> -			if (IS_ERR(handle))
> -				return PTR_ERR(handle);
> -			BUFFER_TRACE(sbi->s_sbh, "get_write_access");
> -			err = ext4_journal_get_write_access(handle, sbi->s_sbh);
> -			if (err) {
> -				ext4_journal_stop(handle);
> -				return err;
> -			}
> -			strlcpy(sbi->s_es->s_last_mounted, cp,
> -				sizeof(sbi->s_es->s_last_mounted));
> -			ext4_handle_dirty_super(handle, sb);
> -			ext4_journal_stop(handle);
> -		}
> -	}
> +	ret = ext4_sample_last_mounted(inode->i_sb, filp->f_path.mnt);
> +	if (ret)
> +		return ret;
>  
>  	ret = fscrypt_file_open(inode, filp);
>  	if (ret)
> -- 
> 2.7.4
> 
-- 
Jan Kara <jack@...e.com>
SUSE Labs, CR

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ