[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1249411813.7576.17.camel@logos>
Date: Tue, 04 Aug 2009 15:50:13 -0300
From: Ramon de Carvalho Valle <ramon@...esecurity.org>
To: Eric Sandeen <sandeen@...deen.net>
Cc: Christoph Hellwig <hch@...radead.org>, xfs@....sgi.com, hch@....de,
linux-kernel@...r.kernel.org, mszeredi@...ell.com
Subject: Re: [PATCH 1/1] XFS: __xfs_get_blocks check pointer to the target
device
On Tue, 2009-08-04 at 11:25 -0500, Eric Sandeen wrote:
> Ramon de Carvalho Valle wrote:
> > On Mon, 2009-08-03 at 17:49 -0400, Christoph Hellwig wrote:
> >> On Mon, Aug 03, 2009 at 05:03:28PM -0300, Ramon de Carvalho Valle wrote:
> >>> The __xfs_get_blocks function does not check if the pointer to the target
> >>> device is valid before dereferencing it.
> >> It should never be zero. It's set by xfs_imap_to_bmap to either
> >> mp->m_ddev_targp which is always allocated, or to mp->m_rtdev_targp
> >> which is always allocated if we have a realtime device, and
> >> XFS_IS_REALTIME_INODE should only be true in that case.
> >>
> >
> > While testing XFS code with a modified version of fsfuzzer on SLES 10
> > SP3 (Kernel 2.6.16.60-0.49.3.ramon-ppc64), I came across the following
> > Oops:
>
> ...
>
> ahah, useful information that would have been great in the original
> patch submission. :)
Sorry about that. :)
>
> > I added a printk() line just before the:
> >
> > bh_result->b_bdev = iomap.iomap_target->bt_bdev;
> >
> > and as we can see iomap.iomap_target is NULL.
> >
> > My guess is that the XFS_DIFLAG_REALTIME flag is being set incorrectly
> > on the xfs inode structure, setting iomapp->iomap_target to the wrong
> > device pointer (probably NULL).
> >
> > I don't know if this is the best place to add a check, neither if
> > returning -XFS_ERROR(EIO) is correct at this point. Maybe doing:
> >
> > if (iomap.iomap_target && omap.iomap_flags & IOMAP_REALTIME)
> > bh_result->b_bdev = iomap.iomap_target->bt_bdev;
> >
> > would be a better solution.
>
> Can you test hch's patch w/ your fuzzed image?
I tested it on my SLES 10 SP3 (Kernel 2.6.16.60-0.49.3.ramon-ppc64) and
it successfully fixed the NULL pointer dereference.
I did some small modifications to the patch to xfs error print the flags
value and fixed the xfs error report tags. I am submitting the Christoph
patch again.
Thanks Christoph and Eric.
-Ramon
>
> Thanks,
> -Eric
Download attachment "signature.asc" of type "application/pgp-signature" (198 bytes)
Powered by blists - more mailing lists