Sometimes BOOT_IMAGE contains partition which does not point to /boot
e.g. 
BOOT_IMAGE=(hd0,gpt1)/opensuse-tumbleweed/6.18.3-1-default/linux-30afdbce3ab6d0eff8f42b71df1a66f4baf2daf8
on Tumbleweed aarch64. Therefore detect common kernel image paths.

Signed-off-by: Petr Vorel <[email protected]>
---
 .../security/integrity/ima/tests/ima_kexec.sh | 28 ++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/testcases/kernel/security/integrity/ima/tests/ima_kexec.sh 
b/testcases/kernel/security/integrity/ima/tests/ima_kexec.sh
index d6eb0829d8..7688690af2 100755
--- a/testcases/kernel/security/integrity/ima/tests/ima_kexec.sh
+++ b/testcases/kernel/security/integrity/ima/tests/ima_kexec.sh
@@ -42,7 +42,7 @@ measure()
 
 setup()
 {
-       local arch
+       local arch f uname
 
        if [ ! -f "$IMA_KEXEC_IMAGE" ]; then
                for arg in $(cat /proc/cmdline); do
@@ -63,6 +63,32 @@ setup()
                fi
        fi
 
+       if [ ! -f "$IMA_KEXEC_IMAGE" ]; then
+               uname="$(uname -r)"
+
+               # x86_64
+               f="/boot/vmlinuz-$uname"
+
+               # ppc64le, s390x
+               if [ ! -f "$f" ]; then
+                       f="/boot/vmlinux-$uname"
+               fi
+
+               # aarch64
+               if [ ! -f "$f" ]; then
+                       f="/boot/Image-$uname"
+               fi
+
+               # aarch64 often uses compression
+               if [ ! -f "$f" ]; then
+                       f="$(ls /boot/Image-$uname.* || true)"
+               fi
+
+               if [ -f "$f" ]; then
+                       IMA_KEXEC_IMAGE="$f"
+               fi
+       fi
+
        if [ ! -f "$IMA_KEXEC_IMAGE" ]; then
                tst_brk TCONF "kernel image not found, specify path in 
\$IMA_KEXEC_IMAGE"
        fi
-- 
2.51.0


Reply via email to