[OE-core] [PATCH] package: skip strip on signed kernel modules

omar.ocampo.coronado at intel.com omar.ocampo.coronado at intel.com
Fri Aug 3 23:09:55 UTC 2018


From: foocampo <omar.ocampo.coronado at intel.com>

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

Signed-off-by: foocampo <omar.ocampo.coronado at intel.com>
---
 meta/lib/oe/package.py | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
index fa3428ad61..f7d2d3b7c4 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -24,6 +24,9 @@ def runstrip(arg):
 
     # kernel module    
     if elftype & 16:
+        if is_kernel_module_signed(file):
+            bb.debug(1, "Skip strip on signed module %s" % file)
+            return
         stripcmd.extend(["--strip-debug", "--remove-section=.comment",
             "--remove-section=.note", "--preserve-dates"])
     # .so and shared library
@@ -46,6 +49,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
-- 
2.18.0




More information about the Openembedded-core mailing list