[PATCH] riscv: prevent pt_regs corruption for secondary idle threads

Sergey Matyukevich geomatsi at gmail.com
Mon May 13 05:19:34 PDT 2024


Hi all,

> From: Sergey Matyukevich <sergey.matyukevich at syntacore.com>
> 
> 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 c7cdd96eca29
> ("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 stores 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: 9a2451f18663 ("RISC-V: Avoid using per cpu array for ordered booting")
> Fixes: 2875fe056156 ("RISC-V: Add cpu_ops and modify default booting method")
> Signed-off-by: Sergey Matyukevich <sergey.matyukevich at syntacore.com>

Friendly ping about this fix. Any thoughts/comments ?

Regards,
Sergey



More information about the linux-riscv mailing list