summaryrefslogtreecommitdiff
path: root/include/linux/stackleak.h
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2023-11-08 15:58:27 +0300
committerKees Cook <keescook@chromium.org>2023-11-08 22:06:50 +0300
commit65120498aaf8d7320647a8b6d6de7db42e74ea52 (patch)
tree5c872661b469998f207b20d299fdbb488539cd8e /include/linux/stackleak.h
parent9cca73d7b4bfec75b2fcef751015f31691afa792 (diff)
downloadlinux-65120498aaf8d7320647a8b6d6de7db42e74ea52.tar.xz
stackleak: add declarations for global functions
With -Wmissing-prototypes enabled, the stackleak code produces a couple of warnings that have no declarations because they are only called from assembler: stackleak.c:127:25: error: no previous prototype for 'stackleak_erase' [-Werror=missing-prototypes] stackleak.c:139:25: error: no previous prototype for 'stackleak_erase_on_task_stack' [-Werror=missing-prototypes] stackleak.c:151:25: error: no previous prototype for 'stackleak_erase_off_task_stack' [-Werror=missing-prototypes] stackleak.c:159:49: error: no previous prototype for 'stackleak_track_stack' [-Werror=missing-prototypes] Add declarations to the stackleak header to shut up the warnings. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Link: https://lore.kernel.org/r/20231108125843.3806765-7-arnd@kernel.org Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'include/linux/stackleak.h')
-rw-r--r--include/linux/stackleak.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/stackleak.h b/include/linux/stackleak.h
index c36e7a3b45e7..3be2cb564710 100644
--- a/include/linux/stackleak.h
+++ b/include/linux/stackleak.h
@@ -14,6 +14,7 @@
#ifdef CONFIG_GCC_PLUGIN_STACKLEAK
#include <asm/stacktrace.h>
+#include <linux/linkage.h>
/*
* The lowest address on tsk's stack which we can plausibly erase.
@@ -76,6 +77,11 @@ static inline void stackleak_task_init(struct task_struct *t)
# endif
}
+asmlinkage void noinstr stackleak_erase(void);
+asmlinkage void noinstr stackleak_erase_on_task_stack(void);
+asmlinkage void noinstr stackleak_erase_off_task_stack(void);
+void __no_caller_saved_registers noinstr stackleak_track_stack(void);
+
#else /* !CONFIG_GCC_PLUGIN_STACKLEAK */
static inline void stackleak_task_init(struct task_struct *t) { }
#endif