On Sat, Jul 12, 2008 at 7:27 PM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote: > Hi Ted, > > It looks like the right place to check for ino=0 in > ext2fs_read_inode_full() is before creating the inode cache, otherwise > since we set icache[i].ino = 0 in create_icache(), it will match the > loop below and thus we return a wrong value. Below patch fixes it. > > ========================================================================== > > Signed-off-by: "Manish Katiyar" <mkatiyar@xxxxxxxxx> > > --- > lib/ext2fs/inode.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/lib/ext2fs/inode.c b/lib/ext2fs/inode.c > index 8908423..a08cb40 100644 > --- a/lib/ext2fs/inode.c > +++ b/lib/ext2fs/inode.c > @@ -536,6 +536,8 @@ errcode_t ext2fs_read_inode_full(ext2_filsys fs, > ext2_ino_t ino, > if (retval != EXT2_ET_CALLBACK_NOTHANDLED) > return retval; > } > + if ((ino == 0) || (ino > fs->super->s_inodes_count)) > + return EXT2_ET_BAD_INODE_NUM; > /* Create inode cache if not present */ > if (!fs->icache) { > retval = create_icache(fs); > @@ -552,8 +554,6 @@ errcode_t ext2fs_read_inode_full(ext2_filsys fs, > ext2_ino_t ino, > } > } > } > - if ((ino == 0) || (ino > fs->super->s_inodes_count)) > - return EXT2_ET_BAD_INODE_NUM; > if (fs->flags & EXT2_FLAG_IMAGE_FILE) { > inodes_per_block = fs->blocksize / EXT2_INODE_SIZE(fs->super); > block_nr = fs->image_header->offset_inode / fs->blocksize; > -- > 1.5.4.3 > > > ===================================================================== > Any ack/nack on this ? > Thanks - > Manish > -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html