Re: unable to load modules with CONFIG_MODVERSIONS=y after commit 8ab2ae655b

From: Linus Torvalds
Date: Tue Dec 06 2016 - 11:39:58 EST


On Tue, Dec 6, 2016 at 5:44 AM, Adam Borowski <kilobyte@xxxxxxxxxx> wrote:
> On Tue, Dec 06, 2016 at 08:31:01AM -0500, Jan Stancek wrote:
>> Starting with 4.9-rc8 / commit 8ab2ae655b ("default exported asm symbols to zero")
>> I'm running into issue with kernel built with CONFIG_MODVERSIONS=y
>> and (older) binutils (binutils-2.25.1-20.base.el7.ppc64le).
>>
>> Modules fail to load, for example:
>>
>> [ 3.163646] Found checksum 0 vs module 4829A47E
>> [ 3.163787] dm_mod: disagrees about version of symbol memcpy
>> [ 3.163862] dm_mod: Unknown symbol memcpy (err -22)
>>
>> Bisect led me to 8ab2ae655b, reverting it allows boot to
>> progress as before.
>
> powerpc happens to be the only arch that actually followed the plan and
> implemented asm-prototypes.h (not including Debian which applied my patch to
> do so on x86, that patch is not in mainline).
>
> Could you try reverting commits that add exports to that file?

Let's not do this. Let's just assume that "checksum=0" matches anything.

Because it's too late to play games with this any more, and it's too
damn fragile.

In fact, I think I'll just revert Arnd's patch, and just rely on
commit faaae2a58143 ("Re-enable CONFIG_MODVERSIONS in a slightly
weaker form") for 4.9.

Because Arnd's patch did explain what was going on, but it also broke
alpha, due to ".set" apparently meaning something else than "set
value" there. So I like Arnd's patch even if it gets reverted, just
because of the "explain things" part.

Or would people prefer just an explicit "zero in the crc tables means
that it never got filled in correctly, so let's match it"?

Arnd, comments?

Linus