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?
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
Will do. Thanks!
> Otherwise seems fine.