Commit 59e43f54 authored by Dave Chinner's avatar Dave Chinner Committed by Carlos Maiolino
Browse files

xfs: sb_spino_align is not verified



It's just read in from the superblock and used without doing any
validity checks at all on the value.

Fixes: fb4f2b4e ("xfs: add sparse inode chunk alignment superblock field")
Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarCarlos Maiolino <cem@kernel.org>
parent 792ef274
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -398,6 +398,20 @@ xfs_validate_sb_common(
					 sbp->sb_inoalignmt, align);
				return -EINVAL;
			}

			if (!sbp->sb_spino_align ||
			    sbp->sb_spino_align > sbp->sb_inoalignmt ||
			    (sbp->sb_inoalignmt % sbp->sb_spino_align) != 0) {
				xfs_warn(mp,
				"Sparse inode alignment (%u) is invalid.",
					sbp->sb_spino_align);
				return -EINVAL;
			}
		} else if (sbp->sb_spino_align) {
			xfs_warn(mp,
				"Sparse inode alignment (%u) should be zero.",
				sbp->sb_spino_align);
			return -EINVAL;
		}
	} else if (sbp->sb_qflags & (XFS_PQUOTA_ENFD | XFS_GQUOTA_ENFD |
				XFS_PQUOTA_CHKD | XFS_GQUOTA_CHKD)) {