mirror of
git://git.yoctoproject.org/poky
synced 2026-08-13 06:05:35 +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:
parent
3a1e44dea1
commit
8fc56faa5d
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user