• E
    xfs: sanitize sb_inopblock in xfs_mount_validate_sb · 392c6de9
    Eric Sandeen 提交于
    xfs_mount_validate_sb doesn't check sb_inopblock for sanity
    (as does its xfs_repair counterpart, FWIW).
    
    If it's out of bounds, we can go off the rails in i.e.
    xfs_inode_buf_verify(), which uses sb_inopblock as a loop
    limit when stepping through a metadata buffer.
    
    The problem can be demonstrated easily by corrupting
    sb_inopblock with xfs_db and trying to mount the result:
    
    # mkfs.xfs -dfile,name=fsfile,size=1g
    # xfs_db -x fsfile
    xfs_db> sb 0
    xfs_db> write inopblock 512
    inopblock = 512
    xfs_db> quit
    
    # mount -o loop fsfile  mnt
    and we blow up in xfs_inode_buf_verify().
    
    With this patch, we get a (very noisy) corruption error,
    and fail the mount as we should.
    Signed-off-by: NEric Sandeen <sandeen@redhat.com>
    Reviewed-by: NJie Liu <jeff.liu@oracle.com>
    Reviewed-by: NBrian Foster <bfoster@redhat.com>
    Signed-off-by: NDave Chinner <david@fromorbit.com>
    392c6de9
xfs_sb.c 24.6 KB