• Helge Deller's avatar
    parisc: fix module loading failure of large kernel modules · c298be74
    Helge Deller authored
    On 32bit (and sometimes 64bit) and with big kernel modules like xfs or
    ipv6 the relocation types R_PARISC_PCREL17F and R_PARISC_PCREL22F may
    fail to reach their PLT stub if we only create one big stub array for
    all sections at the beginning of the core or init section.
    
    With this patch we now instead add individual PLT stub entries
    directly in front of the code sections where the stubs are actually
    called. This reduces the distance between the PCREL location and the
    stub entry so that the relocations can be fulfilled.
    
    While calculating the final layout of the kernel module in memory, the
    kernel module loader calls arch_mod_section_prepend() to request the
    to be reserved amount of memory in front of each individual section.
    
    Tested with 32- and 64bit kernels.
    Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    c298be74
module.c 24.8 KB