mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-12 09:58:36 +00:00
Fix two off-by-one errors when sanity-checking inode numbers. In
ext2fs, inode numbers start at 1, so the maximum valid inode number is (s_inodes_per_group * s_groups_count), not one less. This is just a minimal change to avoid unnecessary panics and errors; some other related bugs that Bruce Evans mentioned to me are not addressed. Reviewed by: bde (ages ago)
This commit is contained in:
parent
85ed93337f
commit
ca305f613f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=96880
@ -502,7 +502,7 @@ ext2_vfree(pvp, ino, mode)
|
||||
|
||||
pip = VTOI(pvp);
|
||||
fs = pip->i_e2fs;
|
||||
if ((u_int)ino >= fs->s_inodes_per_group * fs->s_groups_count)
|
||||
if ((u_int)ino > fs->s_inodes_per_group * fs->s_groups_count)
|
||||
panic("ext2_vfree: range: dev = (%d, %d), ino = %d, fs = %s",
|
||||
major(pip->i_dev), minor(pip->i_dev), ino, fs->fs_fsmnt);
|
||||
|
||||
|
@ -1116,7 +1116,7 @@ ext2_fhtovp(mp, fhp, vpp)
|
||||
ufhp = (struct ufid *)fhp;
|
||||
fs = VFSTOEXT2(mp)->um_e2fs;
|
||||
if (ufhp->ufid_ino < ROOTINO ||
|
||||
ufhp->ufid_ino >= fs->s_groups_count * fs->s_es->s_inodes_per_group)
|
||||
ufhp->ufid_ino > fs->s_groups_count * fs->s_es->s_inodes_per_group)
|
||||
return (ESTALE);
|
||||
|
||||
error = VFS_VGET(mp, ufhp->ufid_ino, LK_EXCLUSIVE, &nvp);
|
||||
|
@ -502,7 +502,7 @@ ext2_vfree(pvp, ino, mode)
|
||||
|
||||
pip = VTOI(pvp);
|
||||
fs = pip->i_e2fs;
|
||||
if ((u_int)ino >= fs->s_inodes_per_group * fs->s_groups_count)
|
||||
if ((u_int)ino > fs->s_inodes_per_group * fs->s_groups_count)
|
||||
panic("ext2_vfree: range: dev = (%d, %d), ino = %d, fs = %s",
|
||||
major(pip->i_dev), minor(pip->i_dev), ino, fs->fs_fsmnt);
|
||||
|
||||
|
@ -1116,7 +1116,7 @@ ext2_fhtovp(mp, fhp, vpp)
|
||||
ufhp = (struct ufid *)fhp;
|
||||
fs = VFSTOEXT2(mp)->um_e2fs;
|
||||
if (ufhp->ufid_ino < ROOTINO ||
|
||||
ufhp->ufid_ino >= fs->s_groups_count * fs->s_es->s_inodes_per_group)
|
||||
ufhp->ufid_ino > fs->s_groups_count * fs->s_es->s_inodes_per_group)
|
||||
return (ESTALE);
|
||||
|
||||
error = VFS_VGET(mp, ufhp->ufid_ino, LK_EXCLUSIVE, &nvp);
|
||||
|
Loading…
Reference in New Issue
Block a user