xfs
[Top] [All Lists]

Re: [PATCH, RFC] xfs: don't verify checksum on non-V5 superblocks

To: Eric Sandeen <sandeen@xxxxxxxxxx>
Subject: Re: [PATCH, RFC] xfs: don't verify checksum on non-V5 superblocks
From: Ben Myers <bpm@xxxxxxx>
Date: Thu, 15 Aug 2013 14:45:31 -0500
Cc: "'linux-xfs@xxxxxxxxxxx'" <linux-xfs@xxxxxxxxxxx>
Delivered-to: linux-xfs@xxxxxxxxxxx
In-reply-to: <520D1BA3.1050500@xxxxxxxxxx>
References: <520D1BA3.1050500@xxxxxxxxxx>
User-agent: Mutt/1.5.20 (2009-06-14)
On Thu, Aug 15, 2013 at 01:19:15PM -0500, Eric Sandeen wrote:
> The current test in xfs_sb_read_verify() will attempt to validate
> an sb checksum if sb_crc is non-zero, even if the superblock is not
> marked as being version 5.
> 
> This runs the risk of picking up random garbage in sb_crc for non-V5
> superblocks; such garbage is known to exist in the wild due to prior bugs.
> This will cause verification to fail for otherwise non-fatal reasons.
> 
> I'm not sure of the point of trying to validate a non-V5 superblock;
> is there one?  Shouldn't this || be an &&?  (Can sb_crc validly be
> 0 for a V5 SB?)
> 
> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>

This looks good to me.
Reviewed-by: Ben Myers <bpm@xxxxxxx>

> --- 
> 
> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
> index 2b0ba35..5ca299b 100644
> --- a/fs/xfs/xfs_mount.c
> +++ b/fs/xfs/xfs_mount.c
> @@ -764,7 +764,7 @@ xfs_sb_read_verify(
>        */
>       if (dsb->sb_magicnum == cpu_to_be32(XFS_SB_MAGIC) &&
>           (((be16_to_cpu(dsb->sb_versionnum) & XFS_SB_VERSION_NUMBITS) ==
> -                                             XFS_SB_VERSION_5) ||
> +                                             XFS_SB_VERSION_5) &&
>            dsb->sb_crc != 0)) {
>  
>               if (!xfs_verify_cksum(bp->b_addr, be16_to_cpu(dsb->sb_sectsize),
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

<Prev in Thread] Current Thread [Next in Thread>