Re: 2.6.6 is crashing repeatedly

From: Neil Brown
Date: Thu May 27 2004 - 06:38:23 EST


On May 27, linux@xxxxxxxxxxx wrote:
> Even with neilb's patch, I just got an nfs oops:

As Olaf Kirch just said on nfs@xxxxxxxxxxxxxxxxxxxxx:

> Hi Neil,
>
> you recently posted a patch that should fix readdir encoding in
> nfsd. You say there
>
> Note that as the offset and whole response is known to be
> 4byte-aligned, the offset pointer will never be split over
> two pages.
>
> This is not true. The dirent offset is a 64bit quantity, so it's quite
> possible it will be split across the page boundary. I'm working on a
> patch...

And that is exactly the problem you have hit:

> Unable to handle kernel paging request at virtual address f2590000
> printing eip:
> c01a99a1
> *pde = 004b1067
> *pte = 32590000
> Oops: 0002 [#1]
> DEBUG_PAGEALLOC
> CPU: 0
> EIP: 0060:[<c01a99a1>] Not tainted
> EFLAGS: 00010246 (2.6.6)
> EIP is at encode_entry+0x51/0x530
> eax: cc010000 ebx: 00000000 ecx: 000001cc edx: f32dcdf8
> esi: f258fffc edi: d4ec21cc ebp: 000001e0 esp: ebfd9b98

Note that "esi" is pointing to 4 bytes from the end of a page, and you
are getting a bad reference at the start of the next page.
The code is storing a 64bit value here, and it doesn't fit.

Stay tuned....

NeilBrown
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/