diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2024-04-10 18:32:12 +0300 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2024-04-10 22:01:35 +0200 |
commit | 5284984a4fbacb0883bfebe905902cdda2891a07 (patch) | |
tree | 63a5a2161974cc4127c98cbba76e1f1a868343f3 | |
parent | f87cbcb345d059f0377b4fa0ba1b766a17fc3710 (diff) | |
download | linux-stable-5284984a4fbacb0883bfebe905902cdda2891a07.tar.gz linux-stable-5284984a4fbacb0883bfebe905902cdda2891a07.tar.bz2 linux-stable-5284984a4fbacb0883bfebe905902cdda2891a07.zip |
bug: Fix no-return-statement warning with !CONFIG_BUG
BUG() does not return, and arch implementations of BUG() use unreachable()
or other non-returning code. However with !CONFIG_BUG, the default
implementation is often used instead, and that does not do that. x86 always
uses its own implementation, but powerpc with !CONFIG_BUG gives a build
error:
kernel/time/timekeeping.c: In function ‘timekeeping_debug_get_ns’:
kernel/time/timekeeping.c:286:1: error: no return statement in function
returning non-void [-Werror=return-type]
Add unreachable() to default !CONFIG_BUG BUG() implementation.
Fixes: e8e9d21a5df6 ("timekeeping: Refactor timekeeping helpers")
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Link: https://lore.kernel.org/r/20240410153212.127477-1-adrian.hunter@intel.com
Closes: https://lore.kernel.org/all/CA+G9fYvjdZCW=7ZGxS6A_3bysjQ56YF7S-+PNLQ_8a4DKh1Bhg@mail.gmail.com/
-rw-r--r-- | include/asm-generic/bug.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index 6e794420bd39..b7de3a4eade1 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h @@ -156,7 +156,10 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...); #else /* !CONFIG_BUG */ #ifndef HAVE_ARCH_BUG -#define BUG() do {} while (1) +#define BUG() do { \ + do {} while (1); \ + unreachable(); \ +} while (0) #endif #ifndef HAVE_ARCH_BUG_ON |