mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
xfs: add more checks to superblock validation
There had been reports where xfs filesystem was randomly corrupted with fsfuzzer, and xfs failed to handle it gracefully. This patch fixes couple of reported problem by providing additional checks in the superblock validation routine. Signed-off-by: Olaf Weber <olaf@sgi.com> Reviewed-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Felix Blyakher <felixb@sgi.com>
This commit is contained in:
parent
f25181f598
commit
2ac00af7a6
1 changed files with 3 additions and 0 deletions
|
@ -291,14 +291,17 @@ xfs_mount_validate_sb(
|
||||||
sbp->sb_sectsize > XFS_MAX_SECTORSIZE ||
|
sbp->sb_sectsize > XFS_MAX_SECTORSIZE ||
|
||||||
sbp->sb_sectlog < XFS_MIN_SECTORSIZE_LOG ||
|
sbp->sb_sectlog < XFS_MIN_SECTORSIZE_LOG ||
|
||||||
sbp->sb_sectlog > XFS_MAX_SECTORSIZE_LOG ||
|
sbp->sb_sectlog > XFS_MAX_SECTORSIZE_LOG ||
|
||||||
|
sbp->sb_sectsize != (1 << sbp->sb_sectlog) ||
|
||||||
sbp->sb_blocksize < XFS_MIN_BLOCKSIZE ||
|
sbp->sb_blocksize < XFS_MIN_BLOCKSIZE ||
|
||||||
sbp->sb_blocksize > XFS_MAX_BLOCKSIZE ||
|
sbp->sb_blocksize > XFS_MAX_BLOCKSIZE ||
|
||||||
sbp->sb_blocklog < XFS_MIN_BLOCKSIZE_LOG ||
|
sbp->sb_blocklog < XFS_MIN_BLOCKSIZE_LOG ||
|
||||||
sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG ||
|
sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG ||
|
||||||
|
sbp->sb_blocksize != (1 << sbp->sb_blocklog) ||
|
||||||
sbp->sb_inodesize < XFS_DINODE_MIN_SIZE ||
|
sbp->sb_inodesize < XFS_DINODE_MIN_SIZE ||
|
||||||
sbp->sb_inodesize > XFS_DINODE_MAX_SIZE ||
|
sbp->sb_inodesize > XFS_DINODE_MAX_SIZE ||
|
||||||
sbp->sb_inodelog < XFS_DINODE_MIN_LOG ||
|
sbp->sb_inodelog < XFS_DINODE_MIN_LOG ||
|
||||||
sbp->sb_inodelog > XFS_DINODE_MAX_LOG ||
|
sbp->sb_inodelog > XFS_DINODE_MAX_LOG ||
|
||||||
|
sbp->sb_inodesize != (1 << sbp->sb_inodelog) ||
|
||||||
(sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog) ||
|
(sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog) ||
|
||||||
(sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE) ||
|
(sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE) ||
|
||||||
(sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE) ||
|
(sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE) ||
|
||||||
|
|
Loading…
Reference in a new issue