Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

panic: make function declarations visible

A few panic() related functions have a global definition but not
declaration, which causes a warning with W=1:

kernel/panic.c:710:6: error: no previous prototype for '__warn_printk' [-Werror=missing-prototypes]
kernel/panic.c:756:24: error: no previous prototype for '__stack_chk_fail' [-Werror=missing-prototypes]
kernel/exit.c:1917:32: error: no previous prototype for 'abort' [-Werror=missing-prototypes]

__warn_printk() is called both as a global function when CONFIG_BUG
is enabled, and as a local function in other configs. The other
two here are called indirectly from generated or assembler code.

Add prototypes for all of these.

Link: https://lkml.kernel.org/r/20230517131102.934196-9-arnd@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Dennis Zhou <dennis@kernel.org>
Cc: Eric Paris <eparis@redhat.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Helge Deller <deller@gmx.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Moore <paul@paul-moore.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Tejun Heo <tj@kernel.org>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Waiman Long <longman@redhat.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Arnd Bergmann and committed by
Andrew Morton
d9cdb431 525bb813

+6 -2
+3 -2
include/asm-generic/bug.h
··· 87 87 * 88 88 * Use the versions with printk format strings to provide better diagnostics. 89 89 */ 90 - #ifndef __WARN_FLAGS 91 90 extern __printf(4, 5) 92 91 void warn_slowpath_fmt(const char *file, const int line, unsigned taint, 93 92 const char *fmt, ...); 93 + extern __printf(1, 2) void __warn_printk(const char *fmt, ...); 94 + 95 + #ifndef __WARN_FLAGS 94 96 #define __WARN() __WARN_printf(TAINT_WARN, NULL) 95 97 #define __WARN_printf(taint, arg...) do { \ 96 98 instrumentation_begin(); \ ··· 100 98 instrumentation_end(); \ 101 99 } while (0) 102 100 #else 103 - extern __printf(1, 2) void __warn_printk(const char *fmt, ...); 104 101 #define __WARN() __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN)) 105 102 #define __WARN_printf(taint, arg...) do { \ 106 103 instrumentation_begin(); \
+3
include/linux/panic.h
··· 32 32 33 33 extern bool crash_kexec_post_notifiers; 34 34 35 + extern void __stack_chk_fail(void); 36 + void abort(void); 37 + 35 38 /* 36 39 * panic_cpu is used for synchronizing panic() and crash_kexec() execution. It 37 40 * holds a CPU number which is executing panic() currently. A value of