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 >