Commit 75b59f2a authored by Andy Chiu's avatar Andy Chiu Committed by Palmer Dabbelt

riscv: vector: clear V-reg in the first-use trap

If there is no context switch happens after we enable V for a process,
then we return to user space with whatever left on the CPU's V registers
accessible to the process. The leaked data could belong to another
process's V-context saved from last context switch, impacting process's
confidentiality on the system.

To prevent this from happening, we clear V registers by restoring
zero'd V context after turining on V.

Fixes: cd054837 ("riscv: Allocate user's vector context in the first-use trap")
Signed-off-by: default avatarAndy Chiu <andy.chiu@sifive.com>
Reviewed-by: default avatarBjörn Töpel <bjorn@rivosinc.com>
Link: https://lore.kernel.org/r/20230627015556.12329-2-andy.chiu@sifive.comSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
parent 26c38cd8
...@@ -167,6 +167,7 @@ bool riscv_v_first_use_handler(struct pt_regs *regs) ...@@ -167,6 +167,7 @@ bool riscv_v_first_use_handler(struct pt_regs *regs)
return true; return true;
} }
riscv_v_vstate_on(regs); riscv_v_vstate_on(regs);
riscv_v_vstate_restore(current, regs);
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment