Re: [PATCH stable 4.9, 4.14, 4.19, 5.4, 5.10] xfs: remove incorrect ASSERT in xfs_rename

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

 



On Thu, Jul 07, 2022 at 04:07:53PM -0700, Kuniyuki Iwashima wrote:
> From: Eric Sandeen <sandeen@xxxxxxxxxx>
> 
> commit e445976537ad139162980bee015b7364e5b64fff upstream.
> 
> Ayushman Dutta reported our 5.10 kernel hit the warning.  It was because
> the original commit misses a Fixes tag and was not backported to the stable
> tree.  The fix is merged in 5.16, but it conflicts in 4.9 - 5.10 because
> of the idmapped mount changes:
> 
>   ++<<<<<<< HEAD
>    +      ASSERT(!(flags & (RENAME_NOREPLACE | RENAME_EXCHANGE)));
>    +      error = xfs_rename_alloc_whiteout(target_dp, &wip);
>   ++=======
>   +       error = xfs_rename_alloc_whiteout(mnt_userns, target_dp, &wip);
>   ++>>>>>>> e445976537ad (xfs: remove incorrect ASSERT in xfs_rename)
> 
> We can resolve this by removing mnt_userns from the argument.
> 
> This ASSERT in xfs_rename is a) incorrect, because
> (RENAME_WHITEOUT|RENAME_NOREPLACE) is a valid combination, and
> b) unnecessary, because actual invalid flag combinations are already
> handled at the vfs level in do_renameat2() before we get called.
> So, remove it.
> 
> Reported-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
> Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>
> Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx>
> Fixes: 7dcf5c3e4527 ("xfs: add RENAME_WHITEOUT support")
> Signed-off-by: Kuniyuki Iwashima <kuniyu@xxxxxxxxxx>
> ---
> I confirmed this can be applied cleanly on the latest 4.9 - 5.10 stable
> branch, but if there is any problem, please let me know.

LGTM
Acked-by: Darrick J. Wong <djwong@xxxxxxxxxx>

--D

> ---
>  fs/xfs/xfs_inode.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
> index e958b1c74561..03497741aef7 100644
> --- a/fs/xfs/xfs_inode.c
> +++ b/fs/xfs/xfs_inode.c
> @@ -3170,7 +3170,6 @@ xfs_rename(
>  	 * appropriately.
>  	 */
>  	if (flags & RENAME_WHITEOUT) {
> -		ASSERT(!(flags & (RENAME_NOREPLACE | RENAME_EXCHANGE)));
>  		error = xfs_rename_alloc_whiteout(target_dp, &wip);
>  		if (error)
>  			return error;
> -- 
> 2.30.2
> 



[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