]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
riscv: stack: Fixup independent softirq stack for CONFIG_FRAME_POINTER=n
authorGuo Ren <guoren@linux.alibaba.com>
Sun, 16 Jul 2023 00:15:06 +0000 (20:15 -0400)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 16 Aug 2023 14:26:29 +0000 (07:26 -0700)
The independent softirq stack uses s0 to save & restore sp, but s0 would
be corrupted when CONFIG_FRAME_POINTER=n. So add s0 in the clobber list
to fix the problem.

Fixes: dd69d07a5a6c ("riscv: stack: Support HAVE_SOFTIRQ_ON_OWN_STACK")
Cc: stable@vger.kernel.org
Reported-by: Zhangjin Wu <falcon@tinylab.org>
Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
Tested-by: Drew Fustini <dfustini@baylibre.com>
Link: https://lore.kernel.org/r/20230716001506.3506041-3-guoren@kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/kernel/irq.c

index d0577cc6a0813f8b05661e25e701902492f75ec5..a8efa053c4a524c830982f9df12453c40b960340 100644 (file)
@@ -84,6 +84,9 @@ void do_softirq_own_stack(void)
                : [sp] "r" (sp)
                : "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7",
                  "t0", "t1", "t2", "t3", "t4", "t5", "t6",
+#ifndef CONFIG_FRAME_POINTER
+                 "s0",
+#endif
                  "memory");
        } else
 #endif