Skip to content
  • Ingo Molnar's avatar
    x86/mm/numa: Fix 32-bit memblock range truncation bug on 32-bit NUMA kernels · 59fd1214
    Ingo Molnar authored
    The following commit:
    
      a0acda91
    
     ("acpi, numa, mem_hotplug: mark all nodes the kernel resides un-hotpluggable")
    
    Introduced numa_clear_kernel_node_hotplug(), which function is executed
    during early bootup, and which marks all currently reserved memblock
    regions as hot-memory-unswappable as well.
    
    y14sg1 <y14sg1@comcast.net> reported that when running 32-bit NUMA kernels,
    the grsecurity/PAX kernel patch flagged a size overflow in this function:
    
      PAX: size overflow detected in function x86_numa_init arch/x86/mm/numa.c:691 [...]
    
    ... the reason for the overflow is that memblock_clear_hotplug() takes physical
    addresses as arguments, while the start/end variables used by
    numa_clear_kernel_node_hotplug() are 'unsigned long', which is 32-bit on PAE
    kernels, but which has 64-bit physical addresses.
    
    So on 32-bit PAE kernels that have physical memory above the 4GB boundary,
    we truncate a 64-bit physical address range to 32 bits and pass it to
    memblock_clear_hotplug(), which at minimum prevents the original memory-hotplug
    bugfix from working, but might have other side effects as well.
    
    The fix is to use the proper type to handle physical addresses, phys_addr_t.
    
    Reported-by: default avatary14sg1 <y14sg1@comcast.net>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Brad Spengler <spender@grsecurity.net>
    Cc: Chen Tang <imtangchen@gmail.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: PaX Team <pageexec@freemail.hu>
    Cc: Taku Izumi <izumi.taku@jp.fujitsu.com>
    Cc: Tang Chen <tangchen@cn.fujitsu.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Wen Congyang <wency@cn.fujitsu.com>
    Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Cc: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    59fd1214