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:
Ian Dowse 2002-05-18 21:33:07 +00:00
parent 85ed93337f
commit ca305f613f
4 changed files with 4 additions and 4 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);