aboutsummaryrefslogtreecommitdiff
path: root/sys/ufs/ffs
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2022-06-11 18:04:19 +0000
committerKirk McKusick <mckusick@FreeBSD.org>2022-06-11 18:05:14 +0000
commit800a53b445e7eb113ba193b1ac98631299178529 (patch)
treeee4ee7c55458a2af2185d0540726b144b4502d31 /sys/ufs/ffs
parentfb6eaf74e9ead477be1f25cba88273ab65ece0d1 (diff)
downloadsrc-800a53b445e7eb113ba193b1ac98631299178529.tar.gz
src-800a53b445e7eb113ba193b1ac98631299178529.zip
Bug fix to UFS/FFS superblock integrity checks when reading a superblock.
One of the checks was that the cylinder group size (fs_cgsize) matched that calculated by CGSIZE(). The value calculated by CGSIZE() has changed over time as the filesystem has evolved. Thus comparing the value of CGSIZE() of the current generation filesystem may not match the size as computed by CGSIZE() that was in effect at the time an older filesystem was created. Therefore the check for fs_cgsize is changed to simply ensure that it is not larger than the filesystem blocksize (fs_bsize). Reported by: Martin Birgmeier Tested by: Martin Birgmeier MFC after: 1 month (with 076002f24d35) PR: 264450 Differential Revision: https://reviews.freebsd.org/D35219
Diffstat (limited to 'sys/ufs/ffs')
-rw-r--r--sys/ufs/ffs/ffs_subr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_subr.c b/sys/ufs/ffs/ffs_subr.c
index f25a6cba12f4..3e31746c2cfc 100644
--- a/sys/ufs/ffs/ffs_subr.c
+++ b/sys/ufs/ffs/ffs_subr.c
@@ -385,7 +385,7 @@ validate_sblock(struct fs *fs, int isaltsblk)
roundup(howmany(SBLOCKSIZE, fs->fs_fsize), fs->fs_frag) ||
fs->fs_iblkno != fs->fs_cblkno + fs->fs_frag ||
fs->fs_dblkno != fs->fs_iblkno + fs->fs_ipg / INOPF(fs) ||
- fs->fs_cgsize != fragroundup(fs, CGSIZE(fs)))
+ fs->fs_cgsize > fs->fs_bsize)
return (ENOENT);
if (fs->fs_csaddr != cgdmin(fs, 0) ||
fs->fs_cssize !=