• Kamalesh Babulal's avatar
    powerpc/modules: Add REL24 relocation support of livepatch symbols · a443bf6e
    Kamalesh Babulal authored
    Livepatch re-uses module loader function apply_relocate_add() to write
    relocations, instead of managing them by arch-dependent
    klp_write_module_reloc() function.
    
    apply_relocate_add() doesn't understand livepatch symbols (marked with
    SHN_LIVEPATCH symbol section index) and assumes them to be local
    symbols by default for R_PPC64_REL24 relocation type. It fails with an
    error, when trying to calculate offset with local_entry_offset():
    
      module_64: kpatch_meminfo: REL24 -1152921504897399800 out of range!
    
    Whereas livepatch symbols are essentially SHN_UNDEF, should be called
    via stub used for global calls. This issue can be fixed by teaching
    apply_relocate_add() to handle both SHN_UNDEF/SHN_LIVEPATCH symbols
    via the same stub. This patch extends SHN_UNDEF code to handle
    livepatch symbols too.
    Signed-off-by: default avatarKamalesh Babulal <kamalesh@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    a443bf6e
module_64.c 22 KB