]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
lkdtm/bugs: Do not confuse the clang/objtool with busy wait loop
authorCatalin Marinas <catalin.marinas@arm.com>
Fri, 19 Dec 2025 15:09:09 +0000 (15:09 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 19 Dec 2025 15:09:09 +0000 (15:09 +0000)
Since commit eb972eab0794 ("lkdtm/bugs: Add cases for BUG and PANIC
occurring in hardirq context"), building with clang for x86_64 results
in the following warnings:

vmlinux.o: warning: objtool: lkdtm_PANIC_IN_HARDIRQ(): unexpected end of section .text.lkdtm_PANIC_IN_HARDIRQ
vmlinux.o: warning: objtool: lkdtm_BUG_IN_HARDIRQ(): unexpected end of section .text.lkdtm_BUG_IN_HARDIRQ

caused by busy "while (wait_for_...);" loops. Add READ_ONCE() and
cpu_relax() to better indicate the intention and avoid any unwanted
compiler optimisations.

Fixes: eb972eab0794 ("lkdtm/bugs: Add cases for BUG and PANIC occurring in hardirq context")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202512190111.jxFSqxUH-lkp@intel.com/
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
drivers/misc/lkdtm/bugs.c

index fa05d77acb558dcf842a27691ed0a250559717dd..502059078b4560cf5be8e00a5388fc50e004d698 100644 (file)
@@ -120,8 +120,8 @@ static void lkdtm_PANIC_IN_HARDIRQ(void)
                               CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD);
        hrtimer_start(&timer, us_to_ktime(100), HRTIMER_MODE_REL_HARD);
 
-       while (wait_for_panic)
-               ;
+       while (READ_ONCE(wait_for_panic))
+               cpu_relax();
 
        hrtimer_cancel(&timer);
 }
@@ -150,8 +150,8 @@ static void lkdtm_BUG_IN_HARDIRQ(void)
                               CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD);
        hrtimer_start(&timer, us_to_ktime(100), HRTIMER_MODE_REL_HARD);
 
-       while (wait_for_bug)
-               ;
+       while (READ_ONCE(wait_for_bug))
+               cpu_relax();
 
        hrtimer_cancel(&timer);
 }