riscv: vector: clear V-reg in the first-use trap
authorAndy Chiu <andy.chiu@sifive.com>
Tue, 27 Jun 2023 01:55:54 +0000 (01:55 +0000)
committerPalmer Dabbelt <palmer@rivosinc.com>
Sat, 1 Jul 2023 14:38:21 +0000 (07:38 -0700)
commit75b59f2a90aa7ccac62e3dcb680dfb967b341431
tree45489bc1ac989f47e2cb742c163f5d04943aefaf
parent26c38cd802c947401cfbcc285b7d841256b5f17f
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: cd054837243b ("riscv: Allocate user's vector context in the first-use trap")
Signed-off-by: Andy Chiu <andy.chiu@sifive.com>
Reviewed-by: Björn Töpel <bjorn@rivosinc.com>
Link: https://lore.kernel.org/r/20230627015556.12329-2-andy.chiu@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/kernel/vector.c