On Mon, 3 Feb 2014, a...@linux-foundation.org wrote: > From: Petr Tesarik <ptesa...@suse.cz> > Subject: arch/x86/mm/numa_32.c: fix the initialization of physnode_map > > With DISCONTIGMEM, the mapping between a pfn and its owning node is > initialized using data provided by the BIOS. However, the initialization > may fail if the extents are not aligned to section boundary (64M). > > The symptom of this bug is an early boot failure in pfn_to_page(), as it > tries to access NODE_DATA(__nid) using index from an unitialized element > of the physnode_map[] array. > > While the bug is always present, it is more likely to be hit in kdump > kernels on large machines, because: > > 1. The memory map for a kdump kernel is specified as exactmap, and > exactmap is more likely to be unaligned. > > 2. Large reservations are more likely to span across a 64M boundary. > > Signed-off-by: Petr Tesarik <ptesa...@suse.cz> > Signed-off-by: Andrew Morton <a...@linux-foundation.org> > --- > > arch/x86/mm/numa_32.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff -puN > arch/x86/mm/numa_32.c~arch-x86-mm-numa_32c-fix-the-initialization-of-physnode_map > arch/x86/mm/numa_32.c > --- > a/arch/x86/mm/numa_32.c~arch-x86-mm-numa_32c-fix-the-initialization-of-physnode_map > +++ a/arch/x86/mm/numa_32.c > @@ -52,6 +52,8 @@ void memory_present(int nid, unsigned lo > nid, start, end); > printk(KERN_DEBUG " Setting physnode_map array to node %d for > pfns:\n", nid); > printk(KERN_DEBUG " "); > + pfn = round_down(pfn, PAGES_PER_SECTION); > + end = round_up(end, PAGES_PER_SECTION); > for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { > physnode_map[pfn / PAGES_PER_SECTION] = nid; > printk(KERN_CONT "%lx ", pfn);
This is the buggy version of the patch which erroneously rounds down the uninitialized "pfn" rather than "start". hpa has already merged the corrected patch into x86/urgent. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/