Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
riscv: prevent pt_regs corruption for secondary idle threads
commit a638b04 upstream. Top of the kernel thread stack should be reserved for pt_regs. However this is not the case for the idle threads of the secondary boot harts. Their stacks overlap with their pt_regs, so both may get corrupted. Similar issue has been fixed for the primary hart, see c7cdd96 ("riscv: prevent stack corruption by reserving task_pt_regs(p) early"). However that fix was not propagated to the secondary harts. The problem has been noticed in some CPU hotplug tests with V enabled. The function smp_callin stored several registers on stack, corrupting top of pt_regs structure including status field. As a result, kernel attempted to save or restore inexistent V context. Fixes: 9a2451f ("RISC-V: Avoid using per cpu array for ordered booting") Fixes: 2875fe0 ("RISC-V: Add cpu_ops and modify default booting method") Signed-off-by: Sergey Matyukevich <[email protected]> Reviewed-by: Alexandre Ghiti <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Palmer Dabbelt <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
- Loading branch information