On Tue, 28 Jun 2011, Dave Chinner wrote:
> On Mon, Jun 27, 2011 at 06:53:30PM +0200, Lukas Czerner wrote:
> > When getting an inode tree pointer from an array inode_tree_ptrs, we
> > should check if agno, which is used as a pointer to the array, lives
> > within the file system, because if it is not, we can end up touching
> > uninitialized memory.
>
> How do you get an agno outside the bounds of the filesystem?
Hi Dave,
in my particular case the problem was in
longform_dir2_entry_check_data(). xfs_dir2_data_entry_t was read and we
used inode numbed (xfs_dir2_data_entry_t)->inumber to compute AG number.
However it contained garbage so the resulting agno was too high. In
modify mode it was not a problem, because the inode was cleared in the
earlies phase, but in no_modify mode, the was still there.
>
> > This commit fixes it by passing xfs_mount_t to affected functions and
> > checking if agno really is inside the file system.
>
> We're slowly removing typedefs as we change code. So probably better
> to use struct xfs_mount for all the places where you add an
> xfs_mount_t.
Will do. Thanks!
-Lukas
>
> Otherwise seems fine.
>
> Cheers,
>
> Dave.
>
--
|