Unverified Commit a26a6c93 authored by Nathan Chancellor's avatar Nathan Chancellor
Browse files

kbuild: Strip trailing padding bytes from modules.builtin.modinfo



After commit d50f2109 ("kbuild: align modinfo section for Secureboot
Authenticode EDK2 compat"), running modules_install with certain
versions of kmod (such as 29.1 in Ubuntu Jammy) in certain
configurations may fail with:

  depmod: ERROR: kmod_builtin_iter_next: unexpected string without modname prefix

The additional padding bytes to ensure .modinfo is aligned within
vmlinux.unstripped are unexpected by kmod, as this section has always
just been null-terminated strings.

Strip the trailing padding bytes from modules.builtin.modinfo after it
has been extracted from vmlinux.unstripped to restore the format that
kmod expects while keeping .modinfo aligned within vmlinux.unstripped to
avoid regressing the Authenticode calculation fix for EDK2.

Cc: stable@vger.kernel.org
Fixes: d50f2109 ("kbuild: align modinfo section for Secureboot Authenticode EDK2 compat")
Reported-by: default avatarOmar Sandoval <osandov@fb.com>
Reported-by: default avatarSamir M <samir@linux.ibm.com>
Reported-by: default avatarVenkat Rao Bagalkote <venkat88@linux.ibm.com>
Closes: https://lore.kernel.org/7fef7507-ad64-4e51-9bb8-c9fb6532e51e@linux.ibm.com/


Tested-by: default avatarOmar Sandoval <osandov@fb.com>
Tested-by: default avatarSamir M <samir@linux.ibm.com>
Tested-by: default avatarVenkat Rao Bagalkote <venkat88@linux.ibm.com>
Reviewed-by: default avatarNicolas Schier <nsc@kernel.org>
Link: https://patch.msgid.link/20251105-kbuild-fix-builtin-modinfo-for-kmod-v1-1-b419d8ad4606@kernel.org


Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
parent 6146a0f1
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -102,11 +102,24 @@ vmlinux: vmlinux.unstripped FORCE
# modules.builtin.modinfo
# ---------------------------------------------------------------------------

# .modinfo in vmlinux.unstripped is aligned to 8 bytes for compatibility with
# tools that expect vmlinux to have sufficiently aligned sections but the
# additional bytes used for padding .modinfo to satisfy this requirement break
# certain versions of kmod with
#
#   depmod: ERROR: kmod_builtin_iter_next: unexpected string without modname prefix
#
# Strip the trailing padding bytes after extracting .modinfo to comply with
# what kmod expects to parse.
quiet_cmd_modules_builtin_modinfo = GEN     $@
      cmd_modules_builtin_modinfo = $(cmd_objcopy); \
                                    sed -i 's/\x00\+$$/\x00/g' $@

OBJCOPYFLAGS_modules.builtin.modinfo := -j .modinfo -O binary

targets += modules.builtin.modinfo
modules.builtin.modinfo: vmlinux.unstripped FORCE
	$(call if_changed,objcopy)
	$(call if_changed,modules_builtin_modinfo)

# modules.builtin
# ---------------------------------------------------------------------------