With CONFIG_GENDWARFKSYMS, __gendwarfksyms_ptr variables are added to the kernel in EXPORT_SYMBOL() to ensure DWARF type information is available for exported symbols in the TUs where they're actually exported. These symbols are dropped when linking vmlinux, but dangling references to them remain in DWARF. With CONFIG_DEBUG_INFO_BTF enabled on X86, pahole versions before commit 9810758003ce ("btf_encoder: Verify 0 address DWARF variables are in ELF section") place these symbols in the .data..percpu section, which results in an "Invalid offset" error in btf_datasec_check_meta() during boot, as all the variables are at zero offset and have non-zero size. If CONFIG_DEBUG_INFO_BTF_MODULES is enabled, this also results in a failure to load modules with: failed to validate module [$module] BTF: -22 The pahole commit that adds 0 address DWARF variable verification was merged after v1.29 was released, so later versions of pahole shouldn't have this issue. Require pahole >v1.29 when GENDWARFKSYMS is enabled with DEBUG_INFO_BTF on X86. Reported-by: Paolo Pisati <paolo.pisati@xxxxxxxxxxxxx> Signed-off-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx> --- kernel/module/Kconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/module/Kconfig b/kernel/module/Kconfig index d7762ef5949a..7c75832aa1af 100644 --- a/kernel/module/Kconfig +++ b/kernel/module/Kconfig @@ -192,6 +192,10 @@ config GENDWARFKSYMS depends on !DEBUG_INFO_REDUCED && !DEBUG_INFO_SPLIT # Requires ELF object files. depends on !LTO + # Requires pahole commit 9810758003ce ("btf_encoder: Verify 0 address + # DWARF variables are in ELF section") on X86 to avoid conflicts with + # __gendwarfksyms_ptr symbols. + depends on !X86 || !DEBUG_INFO_BTF || PAHOLE_VERSION > 129 help Calculate symbol versions from DWARF debugging information using gendwarfksyms. Requires DEBUG_INFO to be enabled. base-commit: 4701f33a10702d5fc577c32434eb62adde0a1ae1 -- 2.49.0.395.g12beb8f557-goog