[Crash-utility] [PATCH] ARM: fix segfault in page table read
Mika Westerberg
mika.westerberg at iki.fi
Wed Jan 18 20:53:24 UTC 2012
On Wed, Jan 18, 2012 at 09:07:29PM +0530, Rabin Vincent wrote:
> I have an ARM crash dump where the page tables have been corrupted.
>
> crash segfaults while reading it because of a stack overflow due to recursion
> in the page table read core:
>
> readmem: e2efcde0, KVADDR, "module unwind table", 24, (ROE), 8600bc0>
> addr: e2efcde0 paddr: 22efcde0 cnt: 24
> <readmem: bf006550, KVADDR, "module unwind index table", 8, (ROE), 9ccab28>
> <readmem: c0004000, KVADDR, "pgd page", 16384, (FOE), 91c18e8>
> addr: c0004000 paddr: 4000 cnt: 4096
> addr: c0005000 paddr: 5000 cnt: 4096
> addr: c0006000 paddr: 6000 cnt: 4096
> addr: c0007000 paddr: 7000 cnt: 4096
> <readmem: ed2d3000, KVADDR, "page table", 4096, (FOE), 91c58f0>
> <readmem: ed2d3000, KVADDR, "page table", 4096, (FOE), 91c58f0>
> <readmem: ed2d3000, KVADDR, "page table", 4096, (FOE), 91c58f0>
> <readmem: ed2d3000, KVADDR, "page table", 4096, (FOE), 91c58f0>
> <readmem: ed2d3000, KVADDR, "page table", 4096, (FOE), 91c58f0>
> <readmem: ed2d3000, KVADDR, "page table", 4096, (FOE), 91c58f0>
> etc till segfault
>
> The problem appears to be that the ARM code is attempting to PTOV() the
> physical address found in the page table and readmem() it as a KVADDR instead
> of just directly reading it as a PHYSADDR.
You are right - there's no point for doing PTOV() for those addreses. To me
this change looks good, thanks.
Acked-by: Mika Westerberg <mika.westerberg at iki.fi>
More information about the Crash-utility
mailing list