Re: [PATCH 2/5] xfs: fallocate() should call file_modified()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 31, 2022 at 05:43:47PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> In XFS, we always update the inode change and modification time when
> any fallocate() operation succeeds.  Furthermore, as various
> fallocate modes can change the file contents (extending EOF,
> punching holes, zeroing things, shifting extents), we should drop
> file privileges like suid just like we do for a regular write().
> There's already a VFS helper that figures all this out for us, so
> use that.
> 
> The net effect of this is that we no longer drop suid/sgid if the
> caller is root, but we also now drop file capabilities.
> 
> We also move the xfs_update_prealloc_flags() function so that it now
> is only called by the scope that needs to set the the prealloc flag.
> 
> Based on a patch from Darrick Wong.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>

I think you can get rid of @flags entirely, right?

With that fixed, I think this looks good.
Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>

--D

> ---
>  fs/xfs/xfs_file.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
> index 6eda41710a5a..223996822d84 100644
> --- a/fs/xfs/xfs_file.c
> +++ b/fs/xfs/xfs_file.c
> @@ -953,6 +953,10 @@ xfs_file_fallocate(
>  			goto out_unlock;
>  	}
>  
> +	error = file_modified(file);
> +	if (error)
> +		goto out_unlock;
> +
>  	if (mode & FALLOC_FL_PUNCH_HOLE) {
>  		error = xfs_free_file_space(ip, offset, len);
>  		if (error)
> @@ -1053,11 +1057,12 @@ xfs_file_fallocate(
>  			if (error)
>  				goto out_unlock;
>  		}
> -	}
>  
> -	error = xfs_update_prealloc_flags(ip, flags);
> -	if (error)
> -		goto out_unlock;
> +		error = xfs_update_prealloc_flags(ip, XFS_PREALLOC_SET);
> +		if (error)
> +			goto out_unlock;
> +
> +	}
>  
>  	/* Change file size if needed */
>  	if (new_size) {
> -- 
> 2.33.0
> 



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux