Re: [PATCH 2/2] xfs: don't consider future format versions valid

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

 



On Wed, Apr 12, 2023 at 09:23:42AM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> In commit fe08cc504448 we reworked the valid superblock version
> checks. If it is a V5 filesystem, it is always valid, then we
> checked if the version was less than V4 (reject) and then checked
> feature fields in the V4 flags to determine if it was valid.
> 
> What we missed was that if the version is not V4 at this point,
> we shoudl reject the fs. i.e. the check current treats V6+
> filesystems as if it was a v4 filesystem. Fix this.
> 
> cc: stable@xxxxxxxxxxxxxxx
> Fixes: fe08cc504448 ("xfs: open code sb verifier feature checks")
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>

Ugh, old code...
Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>

--D

> ---
>  fs/xfs/libxfs/xfs_sb.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c
> index 99cc03a298e2..ba0f17bc1dc0 100644
> --- a/fs/xfs/libxfs/xfs_sb.c
> +++ b/fs/xfs/libxfs/xfs_sb.c
> @@ -72,7 +72,8 @@ xfs_sb_validate_v5_features(
>  }
>  
>  /*
> - * We support all XFS versions newer than a v4 superblock with V2 directories.
> + * We current support XFS v5 formats with known features and v4 superblocks with
> + * at least V2 directories.
>   */
>  bool
>  xfs_sb_good_version(
> @@ -86,16 +87,16 @@ xfs_sb_good_version(
>  	if (xfs_sb_is_v5(sbp))
>  		return xfs_sb_validate_v5_features(sbp);
>  
> +	/* versions prior to v4 are not supported */
> +	if (XFS_SB_VERSION_NUM(sbp) != XFS_SB_VERSION_4)
> +		return false;
> +
>  	/* We must not have any unknown v4 feature bits set */
>  	if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKBITS) ||
>  	    ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) &&
>  	     (sbp->sb_features2 & ~XFS_SB_VERSION2_OKBITS)))
>  		return false;
>  
> -	/* versions prior to v4 are not supported */
> -	if (XFS_SB_VERSION_NUM(sbp) < XFS_SB_VERSION_4)
> -		return false;
> -
>  	/* V4 filesystems need v2 directories and unwritten extents */
>  	if (!(sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT))
>  		return false;
> -- 
> 2.39.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