arm64: move smp_send_stop() cpu mask off stack
authorArnd Bergmann <arnd@arndb.de>
Fri, 20 Jun 2025 11:10:41 +0000 (13:10 +0200)
committerWill Deacon <will@kernel.org>
Fri, 4 Jul 2025 15:32:15 +0000 (16:32 +0100)
For really large values of CONFIG_NR_CPUS, a CPU mask value should
not be put on the stack:

arch/arm64/kernel/smp.c:1188:1: error: the frame size of 8544 bytes is larger than 1536 bytes [-Werror=frame-larger-than=]

This could be achieved using alloc_cpumask_var(), which makes it
depend on CONFIG_CPUMASK_OFFSTACK, but as this function is already
serialized and can only run on one CPU, making the variable 'static'
is easier.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20250620111045.3364827-1-arnd@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/smp.c

index 3b3f6b56e733039cad7ff5b8995db16a68f3c762..21a7953035685bc9a03779809ebee861d460c885 100644 (file)
@@ -1143,7 +1143,7 @@ static inline unsigned int num_other_online_cpus(void)
 void smp_send_stop(void)
 {
        static unsigned long stop_in_progress;
-       cpumask_t mask;
+       static cpumask_t mask;
        unsigned long timeout;
 
        /*