• Gary Hade's avatar
    x86: remove kernel_physical_mapping_init() from init section · f5495506
    Gary Hade authored
    Impact: fix crash with memory hotplug enabled
    
    kernel_physical_mapping_init() is called during memory hotplug
    so it does not belong in the init section.
    
    If the kernel is built with CONFIG_DEBUG_SECTION_MISMATCH=y on
    the make command line, arch/x86/mm/init_64.c is compiled with
    the -fno-inline-functions-called-once gcc option defeating
    inlining of kernel_physical_mapping_init() within init_memory_mapping().
    
    When kernel_physical_mapping_init() is not inlined it is placed
    in the .init.text section according to the __init in it's current
    declaration.  A later call to kernel_physical_mapping_init() during
    a memory hotplug operation encounters an int3 trap because the
    .init.text section memory has been freed.
    
    This patch eliminates the crash caused by the int3 trap by moving the
    non-inlined kernel_physical_mapping_init() from .init.text to .meminit.text.
    Signed-off-by: default avatarGary Hade <garyhade@us.ibm.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    f5495506
init_64.c 30.9 KB