• Darrick J. Wong's avatar
    xfs: AGI length should be bounds checked · 2d7d1e7e
    Darrick J. Wong authored
    Similar to the recent patch strengthening the AGF agf_length
    verification, the AGI verifier does not check that the AGI length field
    is within known good bounds.  This isn't currently checked by runtime
    kernel code, yet we assume in many places that it is correct and verify
    other metadata against it.
    
    Add length verification to the AGI verifier.  Just like the AGF length
    checking, the length of the AGI must be equal to the size of the AG
    specified in the superblock, unless it is the last AG in the filesystem.
    In that case, it must be less than or equal to sb->sb_agblocks and
    greater than XFS_MIN_AG_BLOCKS, which is the smallest AG a growfs
    operation will allow to exist.
    
    There's only one place in the filesystem that actually uses agi_length,
    but let's not leave it vulnerable to the same weird nonsense that
    generates syzbot bugs, eh?
    Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    2d7d1e7e
xfs_alloc.c 105 KB