Ard Biesheuvel <> writes:

> On 11 April 2018 at 16:49, Michael Ellerman
> <> wrote:
>> On Tue, 2018-04-10 at 01:22:06 UTC, Michael Ellerman wrote:
>>> 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-g99fec39 
>>> #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 71810db27c1c ("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: 71810db27c1c ("modversions: treat symbol CRCs as 32 bit quantities")
>>> Signed-off-by: Michael Ellerman <>
>> Applied to powerpc fixes.
> Thanks for the cc. I guess this only affects powerpc, given that it is
> the only arch that switches between CRC immediate values and CRC
> offsets depending on the configuration.

No worries.

Is there any reason we shouldn't always turn on CONFIG_MODULE_REL_CRCS?
It seems to work, but I wanted to test it more before switching to that,
hence the quick fix above.

arch/um looks like it might be switching based on config, but I don't
know enough to say:

        default y
        depends on STATIC_LINK
  config LD_SCRIPT_DYN
        default y
        depends on !LD_SCRIPT_STATIC


Reply via email to