Skip to content
  • Michael Ellerman's avatar
    powerpc/modules: Fix crashes by adding CONFIG_RELOCATABLE to vermagic · 73aca179
    Michael Ellerman authored
    If you build the kernel with CONFIG_RELOCATABLE=n, then install the
    modules, rebuild the kernel with CONFIG_RELOCATABLE=y and leave the
    old modules installed, we crash something like:
    
      Unable to handle kernel paging request for data at address 0xd000000018d66cef
      Faulting instruction address: 0xc0000000021ddd08
      Oops: Kernel access of bad area, sig: 11 [#1]
      Modules linked in: x_tables autofs4
      CPU: 2 PID: 1 Comm: systemd Not tainted 4.16.0-rc6-gcc_ubuntu_le-g99fec39e #1
      ...
      NIP check_version.isra.22+0x118/0x170
      Call Trace:
        __ksymtab_xt_unregister_table+0x58/0xfffffffffffffcb8 [x_tables] (unreliable)
        resolve_symbol+0xb4/0x150
        load_module+0x10e8/0x29a0
        SyS_finit_module+0x110/0x140
        system_call+0x58/0x6c
    
    This happens because since commit 71810db2 ("modversions: treat
    symbol CRCs as 32 bit quantities"), a relocatable kernel encodes and
    handles symbol CRCs differently from a non-relocatable kernel.
    
    Although it's possible we could try and detect this situation and
    handle it, it's much more robust to simply make the state of
    CONFIG_RELOCATABLE part of the module vermagic.
    
    Fixes: 71810db2
    
     ("modversions: treat symbol CRCs as 32 bit quantities")
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    73aca179