x86, kdump: fix invalid access on i386 sparsemem
authorKen'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>
Mon, 20 Oct 2008 04:51:52 +0000 (13:51 +0900)
committerIngo Molnar <mingo@elte.hu>
Tue, 28 Oct 2008 15:48:24 +0000 (16:48 +0100)
commite7706fc691513b0f06adb3de3d6ac04293180146
tree06a8ace4426f38ec9015373d6f3b08abd6a57456
parent1281675e9c0d4d42d993697f4daab45ef22d49da
x86, kdump: fix invalid access on i386 sparsemem

Impact: fix kdump crash on 32-bit sparsemem kernels

Since linux-2.6.27, kdump has failed on i386 sparsemem kernel.
1st-kernel gets a panic just before switching to 2nd-kernel.

The cause is that a kernel accesses invalid mem_section by
page_to_pfn(image->swap_page) at machine_kexec().
image->swap_page is allocated if kexec for hibernation, but
it is not allocated if kdump. So if kdump, a kernel should
not access the mem_section corresponding to image->swap_page.

The attached patch fixes this invalid access.

Signed-off-by: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>
Cc: kexec-ml <kexec@lists.infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/machine_kexec_32.c