Messages in this thread | | | Subject | Re: [PATCH] drop_buffers() shouldn't de-ref page->mapping if its NULL | From | Badari Pulavarty <> | Date | 28 Apr 2005 08:12:34 -0700 |
| |
On Wed, 2005-04-27 at 20:46, OGAWA Hirofumi wrote: > Badari Pulavarty <pbadari@us.ibm.com> writes: > > > Hi, > > > > I answered my own question. It looks like we could have pages > > with buffers without page->mapping. In such cases, we shouldn't > > de-ref page->mapping in drop_buffers(). Here is the trivial > > patch to fix it. > > > > Thanks, > > Badari > > [...] > > > > > Signed-off-by: Badari Pulavarty <pbadari@us.ibm.com> > > --- linux-2.6.12-rc2.org/fs/buffer.c 2005-04-27 07:19:44.000000000 -0700 > > +++ linux-2.6.12-rc2/fs/buffer.c 2005-04-27 07:20:34.000000000 -0700 > > @@ -2917,7 +2917,7 @@ drop_buffers(struct page *page, struct b > > > > bh = head; > > do { > > - if (buffer_write_io_error(bh)) > > + if (buffer_write_io_error(bh) && page->mapping) > > set_bit(AS_EIO, &page->mapping->flags); > > if (buffer_busy(bh)) > > goto failed; > > On my experience, this happened the bh leak case only.
Could you explain more on bh leak ? Is there one in the current code ?
> > If you are not sure whether this is valid state or not, I worry this > patch hides real bug. How about adding the warning, not just remove > de-ref?
Andrew confirmed that this is a valid case.
I don't understand what you want to do here ? If the mapping is NULL, we can't de-ref it. Whats the point in putting a warning and de-refing it. Its going to cause NULL pointer de-ref anyway.
Thanks, Badari
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |