1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 17:19:20 +00:00

package: skip strip on signed kernel modules

Executing strip action on kernel modules removes the signature.
Is not possible to strip and keep the signature, therefore avoid
strip signed kernel modules.

(From OE-Core rev: 4c47e5f171fa2603355e2f9183065ce8137a18c7)

Signed-off-by: Omar Ocampo <omar.ocampo.coronado@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
foocampo
2018-08-03 19:47:40 -05:00
committed by Richard Purdie
parent 3a1e44dea1
commit 8fc56faa5d
+16 -4
View File
@@ -21,11 +21,15 @@ def runstrip(arg):
os.chmod(file, newmode)
stripcmd = [strip]
skip_strip = False
# kernel module
if elftype & 16:
stripcmd.extend(["--strip-debug", "--remove-section=.comment",
"--remove-section=.note", "--preserve-dates"])
if is_kernel_module_signed(file):
bb.debug(1, "Skip strip on signed module %s" % file)
skip_strip = True
else:
stripcmd.extend(["--strip-debug", "--remove-section=.comment",
"--remove-section=.note", "--preserve-dates"])
# .so and shared library
elif ".so" in file and elftype & 8:
stripcmd.extend(["--remove-section=.comment", "--remove-section=.note", "--strip-unneeded"])
@@ -36,7 +40,8 @@ def runstrip(arg):
stripcmd.append(file)
bb.debug(1, "runstrip: %s" % stripcmd)
output = subprocess.check_output(stripcmd, stderr=subprocess.STDOUT)
if not skip_strip:
output = subprocess.check_output(stripcmd, stderr=subprocess.STDOUT)
if newmode:
os.chmod(file, origmode)
@@ -46,6 +51,13 @@ def is_kernel_module(path):
with open(path) as f:
return mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ).find(b"vermagic=") >= 0
# Detect if .ko module is signed
def is_kernel_module_signed(path):
with open(path, "rb") as f:
f.seek(-28, 2)
module_tail = f.read()
return "Module signature appended" in "".join(chr(c) for c in bytearray(module_tail))
# Return type (bits):
# 0 - not elf
# 1 - ELF