Re: innd mmap bug in 2.4.0-test12

Zlatko Calusic
2000-12-27T22:37:20Z

Rik van Riel <riel@conectiva.com.br> writes:

> On Mon, 25 Dec 2000, Dan Aloni wrote:
> > On 25 Dec 2000, Zlatko Calusic wrote:
> >
> > > Speaking of page_launder() I just stumbled upon two oopsen today on
> > > the UP build. Maybe it could give a hint to someone, I'm not that good
> > > at Oops decoding.
> >
> > I've decoded the Oops I got, and found that the problem is in
> > vmscan.c:line-605, where page->mapping is NULL and a_ops gets
> > resolved and dereferenced at 0x0000000c.
>
> The code assumes that every page which has the PG_dirty
> bit set also has page->mapping set to a valid value.
>
> The BUG() people are getting confirms that this assumption
> is not necessarily true and the VM work that's going on will
> most likely make it not be true either in some cases.
>
> The (trivial) patch below should fix this problem.
>
> Linus and/or Alan, could you please apply this for the next
> pre-patch ?
>

Looking at the patch, I'm practically sure it will cure the symptoms.
But I'm still slightly worried about those pages we skip in
there. Maybe we should at least try to discover what are those pages,
and then maybe it will become obvious what we need (or not) to do with
them.

Some strategic printk()s could probably give us some clue.

Too bad I lost track of the recent changes due to catastrofic time
shortage. And that is a shame as I'm very satisfied with the current
VM code, thanks to your hard work Rik.

> regards,
>
> Rik
> --
> Hollywood goes for world dumbination,
> Trailer at 11.
>
> http://www.surriel.com/
> http://www.conectiva.com/ http://distro.conectiva.com.br/
>
>
> --- vmscan.c.orig Wed Dec 27 16:48:24 2000
> +++ vmscan.c Wed Dec 27 17:14:32 2000
> @@ -601,7 +601,7 @@
> * Dirty swap-cache page? Write it out if
> * last copy..
> */
> - if (PageDirty(page)) {
> + if (PageDirty(page) && page->mapping) {
> int (*writepage)(struct page *) = page->mapping->a_ops->writepage;
> int result;
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> Please read the FAQ at http://www.tux.org/lkml/
>

--
Zlatko