From: Arnd Bergmann Date: Tue, 31 Mar 2026 14:28:38 +0000 (+0200) Subject: init.h: discard exitcall symbols early X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd2464a059d6e88eecda87d71d3dbc87175289f0;p=thirdparty%2Flinux.git init.h: discard exitcall symbols early Any __exitcall() and built-in module_exit() handler is marked as __used, which leads to the code being included in the object file and later discarded at link time. As far as I can tell, this was originally added at the same time as initcalls were marked the same way, to prevent them from getting dropped with gcc-3.4, but it was never actaully necessary to keep exit functions around. Mark them as __maybe_unused instead, which lets the compiler treat the exitcalls as entirely unused, and make better decisions about dropping specializing static functions called from these. Link: https://lore.kernel.org/all/acruxMNdnUlyRHiy@google.com/ Link: https://lore.kernel.org/20260331142846.3187706-1-arnd@kernel.org Signed-off-by: Arnd Bergmann Acked-by: Nicolas Schier Cc: Andriy Shevchenko Cc: Dmitry Torokhov Cc: Josh Poimboeuf Cc: Kees Cook Cc: Marco Elver Cc: Nathan Chancellor Cc: Peter Zijlstra Cc: Petr Mladek Signed-off-by: Andrew Morton --- diff --git a/include/linux/init.h b/include/linux/init.h index 40331923b9f4a..6326c61e2332d 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -47,7 +47,7 @@ #define __initdata __section(".init.data") #define __initconst __section(".init.rodata") #define __exitdata __section(".exit.data") -#define __exit_call __used __section(".exitcall.exit") +#define __exit_call __maybe_unused __section(".exitcall.exit") /* * modpost check for section mismatches during the kernel build.