Re: Build/boot problem with 7b4537199a4a (Re: [PATCH v6 02/10] kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS)

From: Christophe Leroy
Date: Sat Aug 20 2022 - 10:10:32 EST




Le 20/08/2022 à 14:05, Sedat Dilek a écrit :
> On Sat, Aug 20, 2022 at 12:04 PM Christophe Leroy
> <christophe.leroy@xxxxxxxxxx> wrote:
>>
>> Hi,
>>
>> Le 13/05/2022 à 13:39, Masahiro Yamada a écrit :
>>> include/{linux,asm-generic}/export.h defines a weak symbol, __crc_*
>>> as a placeholder.
>>>
>>> Genksyms writes the version CRCs into the linker script, which will be
>>> used for filling the __crc_* symbols. The linker script format depends
>>> on CONFIG_MODULE_REL_CRCS. If it is enabled, __crc_* holds the offset
>>> to the reference of CRC.
>>>
>>> It is time to get rid of this complexity.
>>>
>>> Now that modpost parses text files (.*.cmd) to collect all the CRCs,
>>> it can generate C code that will be linked to the vmlinux or modules.
>>>
>>> Generate a new C file, .vmlinux.export.c, which contains the CRCs of
>>> symbols exported by vmlinux. It is compiled and linked to vmlinux in
>>> scripts/link-vmlinux.sh.
>>>
>>> Put the CRCs of symbols exported by modules into the existing *.mod.c
>>> files. No additional build step is needed for modules. As before,
>>> *.mod.c are compiled and linked to *.ko in scripts/Makefile.modfinal.
>>>
>>> No linker magic is used here. The new C implementation works in the
>>> same way, whether CONFIG_RELOCATABLE is enabled or not.
>>> CONFIG_MODULE_REL_CRCS is no longer needed.
>>>
>>> Previously, Kbuild invoked additional $(LD) to update the CRCs in
>>> objects, but this step is unneeded too.
>>>
>>> Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
>>> Tested-by: Nathan Chancellor <nathan@xxxxxxxxxx>
>>> Tested-by: Nicolas Schier <nicolas@xxxxxxxxx>
>>> Reviewed-by: Nicolas Schier <nicolas@xxxxxxxxx>
>>
>> Problem with v6.0-rc1
>> Problem with v5.19
>> No problem with v5.18
>>
>> Bisected to 7b4537199a4a ("kbuild: link symbol CRCs at final link,
>> removing CONFIG_MODULE_REL_CRCS")
>>
>
> What you are looking for is...
>
> commit 7d13fd96df875a9d786ee6dcc8fec460d35d4b12
> ("modpost: fix module versioning when a symbol lacks valid CRC")
>
> It's pending in kbuild.git#fixes.
>
> -Sedat-
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit/?h=fixes&id=7d13fd96df875a9d786ee6dcc8fec460d35d4b12
> [2] https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/log/?h=fixes
>

That patch doesn't fix the problem.

Christophe