From: Andrew Morton Cc: Neil Brown Signed-off-by: Andrew Morton --- fs/ext3/super.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff -puN fs/ext3/super.c~knfsd-make-ext3-reject-filehandles-referring-to-invalid-inode-numbers-tidy fs/ext3/super.c --- a/fs/ext3/super.c~knfsd-make-ext3-reject-filehandles-referring-to-invalid-inode-numbers-tidy +++ a/fs/ext3/super.c @@ -563,15 +563,15 @@ static struct dentry *ext3_get_dentry(st struct inode *inode; struct dentry *result; - if (ino != EXT3_ROOT_INO && ino < EXT3_FIRST_INO(sb)) + if (ino < EXT3_FIRST_INO(sb) && ino != EXT3_ROOT_INO) return ERR_PTR(-ESTALE); if (ino > le32_to_cpu(EXT3_SB(sb)->s_es->s_inodes_count)) return ERR_PTR(-ESTALE); /* iget isn't really right if the inode is currently unallocated!! * - * ext3_read_inode will return a bad_inode if the inode had been deleted. - * so we should be safe. + * ext3_read_inode will return a bad_inode if the inode had been + * deleted, so we should be safe. * * Currently we don't know the generation for parent directory, so * a generation of 0 means "accept any" @@ -579,9 +579,8 @@ static struct dentry *ext3_get_dentry(st inode = iget(sb, ino); if (inode == NULL) return ERR_PTR(-ENOMEM); - if (is_bad_inode(inode) - || (generation && inode->i_generation != generation) - ) { + if (is_bad_inode(inode) || + (generation && inode->i_generation != generation)) { iput(inode); return ERR_PTR(-ESTALE); } _