* [v1, 0/2] Initialize Vector registers in the first-use trap
@ 2023-06-27 1:55 Andy Chiu
2023-06-27 1:55 ` [v1, 1/2] riscv: vector: clear V-reg " Andy Chiu
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Andy Chiu @ 2023-06-27 1:55 UTC (permalink / raw)
To: linux-riscv, palmer, paul.walmsley
Cc: vineetg, greentime.hu, guoren, bjorn, Andy Chiu, Albert Ou
Before applying this series, We only initialize the space for saving
Vector registers. This is not enough as Vector registers themselves also
neeeded to be initialized before dropping back into userspace. Or, we
may risk leaking a process's data left in Vector register to another
process. This can be verified by only applying the second patch and
running the test.
Andy Chiu (2):
riscv: vector: clear V-reg in the first-use trap
selftests: Test RISC-V Vector's first-use handler
arch/riscv/kernel/vector.c | 1 +
.../testing/selftests/riscv/vector/.gitignore | 1 +
tools/testing/selftests/riscv/vector/Makefile | 6 +-
.../selftests/riscv/vector/v_initval_nolibc.c | 68 +++++++++++++++++++
4 files changed, 75 insertions(+), 1 deletion(-)
create mode 100644 tools/testing/selftests/riscv/vector/v_initval_nolibc.c
--
2.17.1
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 8+ messages in thread* [v1, 1/2] riscv: vector: clear V-reg in the first-use trap 2023-06-27 1:55 [v1, 0/2] Initialize Vector registers in the first-use trap Andy Chiu @ 2023-06-27 1:55 ` Andy Chiu 2023-06-27 7:28 ` Björn Töpel 2023-06-27 1:55 ` [v1, 2/2] selftests: Test RISC-V Vector's first-use handler Andy Chiu ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Andy Chiu @ 2023-06-27 1:55 UTC (permalink / raw) To: linux-riscv, palmer, paul.walmsley Cc: vineetg, greentime.hu, guoren, bjorn, Andy Chiu, Albert Ou, Vincent Chen, Guo Ren, Conor Dooley, Richard Henderson 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> --- arch/riscv/kernel/vector.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/kernel/vector.c b/arch/riscv/kernel/vector.c index f9c8e19ab301..8d92fb6c522c 100644 --- a/arch/riscv/kernel/vector.c +++ b/arch/riscv/kernel/vector.c @@ -167,6 +167,7 @@ bool riscv_v_first_use_handler(struct pt_regs *regs) return true; } riscv_v_vstate_on(regs); + riscv_v_vstate_restore(current, regs); return true; } -- 2.17.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [v1, 1/2] riscv: vector: clear V-reg in the first-use trap 2023-06-27 1:55 ` [v1, 1/2] riscv: vector: clear V-reg " Andy Chiu @ 2023-06-27 7:28 ` Björn Töpel 0 siblings, 0 replies; 8+ messages in thread From: Björn Töpel @ 2023-06-27 7:28 UTC (permalink / raw) To: Andy Chiu, linux-riscv, palmer, paul.walmsley Cc: vineetg, greentime.hu, guoren, bjorn, Andy Chiu, Albert Ou, Vincent Chen, Guo Ren, Conor Dooley, Richard Henderson Andy Chiu <andy.chiu@sifive.com> writes: > 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> _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 8+ messages in thread
* [v1, 2/2] selftests: Test RISC-V Vector's first-use handler 2023-06-27 1:55 [v1, 0/2] Initialize Vector registers in the first-use trap Andy Chiu 2023-06-27 1:55 ` [v1, 1/2] riscv: vector: clear V-reg " Andy Chiu @ 2023-06-27 1:55 ` Andy Chiu 2023-06-27 7:46 ` Björn Töpel 2023-07-04 14:42 ` [v1, 0/2] Initialize Vector registers in the first-use trap Palmer Dabbelt 2023-07-04 15:02 ` patchwork-bot+linux-riscv 3 siblings, 1 reply; 8+ messages in thread From: Andy Chiu @ 2023-06-27 1:55 UTC (permalink / raw) To: linux-riscv, palmer, paul.walmsley Cc: vineetg, greentime.hu, guoren, bjorn, Andy Chiu, Shuah Khan, Albert Ou This add a test to check if the kernel zero-initializes all V registers after the first-use trap handler returns. If V registers are not zero-initialized, then the test should fail one out of several runs: ``` root@sifive-fpga:~# ./v_initval_nolibc # vl = 256 not ok 1 detect stale values on v-regesters 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4c 41 4e 47 3d 43 0 50 41 54 48 3d 2f 75 73 72 2f 6c 6f 63 61 6c 2f 73 62 69 6e 3a 2f 75 73 72 2f 6c 6f 63 61 6c 2f 62 69 6e 3a 2f 75 73 72 ff ff 81 0 0 0 0 0 0 0 0 0 0 0 0 0 ``` Otherwise, the test passes without errors each run. Signed-off-by: Andy Chiu <andy.chiu@sifive.com> --- .../testing/selftests/riscv/vector/.gitignore | 1 + tools/testing/selftests/riscv/vector/Makefile | 6 +- .../selftests/riscv/vector/v_initval_nolibc.c | 68 +++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/riscv/vector/v_initval_nolibc.c diff --git a/tools/testing/selftests/riscv/vector/.gitignore b/tools/testing/selftests/riscv/vector/.gitignore index 4f2b4e8a3b08..9ae7964491d5 100644 --- a/tools/testing/selftests/riscv/vector/.gitignore +++ b/tools/testing/selftests/riscv/vector/.gitignore @@ -1,2 +1,3 @@ vstate_exec_nolibc vstate_prctl +v_initval_nolibc diff --git a/tools/testing/selftests/riscv/vector/Makefile b/tools/testing/selftests/riscv/vector/Makefile index cd6e80bf995d..bfff0ff4f3be 100644 --- a/tools/testing/selftests/riscv/vector/Makefile +++ b/tools/testing/selftests/riscv/vector/Makefile @@ -2,7 +2,7 @@ # Copyright (C) 2021 ARM Limited # Originally tools/testing/arm64/abi/Makefile -TEST_GEN_PROGS := vstate_prctl +TEST_GEN_PROGS := vstate_prctl v_initval_nolibc TEST_GEN_PROGS_EXTENDED := vstate_exec_nolibc include ../../lib.mk @@ -13,3 +13,7 @@ $(OUTPUT)/vstate_prctl: vstate_prctl.c ../hwprobe/sys_hwprobe.S $(OUTPUT)/vstate_exec_nolibc: vstate_exec_nolibc.c $(CC) -nostdlib -static -include ../../../../include/nolibc/nolibc.h \ -Wall $(CFLAGS) $(LDFLAGS) $^ -o $@ -lgcc + +$(OUTPUT)/v_initval_nolibc: v_initval_nolibc.c + $(CC) -nostdlib -static -include ../../../../include/nolibc/nolibc.h \ + -Wall $(CFLAGS) $(LDFLAGS) $^ -o $@ -lgcc diff --git a/tools/testing/selftests/riscv/vector/v_initval_nolibc.c b/tools/testing/selftests/riscv/vector/v_initval_nolibc.c new file mode 100644 index 000000000000..66764edb0d52 --- /dev/null +++ b/tools/testing/selftests/riscv/vector/v_initval_nolibc.c @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include "../../kselftest.h" +#define MAX_VSIZE (8192 * 32) + +void dump(char *ptr, int size) +{ + int i = 0; + + for (i = 0; i < size; i++) { + if (i != 0) { + if (i % 16 == 0) + printf("\n"); + else if (i % 8 == 0) + printf(" "); + } + printf("%02x ", ptr[i]); + } + printf("\n"); +} + +int main(void) +{ + int i; + unsigned long vl; + char *datap, *tmp; + + datap = malloc(MAX_VSIZE); + if (!datap) { + ksft_test_result_fail("fail to allocate memory for size = %lu\n", MAX_VSIZE); + exit(-1); + } + + tmp = datap; + asm volatile ( + ".option push\n\t" + ".option arch, +v\n\t" + "vsetvli %0, x0, e8, m8, ta, ma\n\t" + "vse8.v v0, (%2)\n\t" + "add %1, %2, %0\n\t" + "vse8.v v8, (%1)\n\t" + "add %1, %1, %0\n\t" + "vse8.v v16, (%1)\n\t" + "add %1, %1, %0\n\t" + "vse8.v v24, (%1)\n\t" + ".option pop\n\t" + : "=&r" (vl), "=r" (tmp) : "r" (datap) : "memory"); + + ksft_print_msg("vl = %lu\n", vl); + + if (datap[0] != 0x00 && datap[0] != 0xff) { + ksft_test_result_fail("v-regesters are not properly initialized\n"); + dump(datap, vl * 4); + exit(-1); + } + + for (i = 1; i < vl * 4; i++) { + if (datap[i] != datap[0]) { + ksft_test_result_fail("detect stale values on v-regesters\n"); + dump(datap, vl * 4); + exit(-2); + } + } + + free(datap); + ksft_exit_pass(); + return 0; +} -- 2.17.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [v1, 2/2] selftests: Test RISC-V Vector's first-use handler 2023-06-27 1:55 ` [v1, 2/2] selftests: Test RISC-V Vector's first-use handler Andy Chiu @ 2023-06-27 7:46 ` Björn Töpel 2023-06-27 15:39 ` Andy Chiu 0 siblings, 1 reply; 8+ messages in thread From: Björn Töpel @ 2023-06-27 7:46 UTC (permalink / raw) To: Andy Chiu, linux-riscv, palmer, paul.walmsley Cc: vineetg, greentime.hu, guoren, bjorn, Andy Chiu, Shuah Khan, Albert Ou Andy Chiu <andy.chiu@sifive.com> writes: > This add a test to check if the kernel zero-initializes all V registers > after the first-use trap handler returns. > > If V registers are not zero-initialized, then the test should fail one > out of several runs: > > ``` > root@sifive-fpga:~# ./v_initval_nolibc > # vl = 256 > not ok 1 detect stale values on v-regesters > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > 0 4c 41 4e 47 3d 43 0 50 41 54 48 3d 2f 75 73 > 72 2f 6c 6f 63 61 6c 2f 73 62 69 6e 3a 2f 75 73 > 72 2f 6c 6f 63 61 6c 2f 62 69 6e 3a 2f 75 73 72 > ff ff 81 0 0 0 0 0 0 0 0 0 0 0 0 0 > ``` > > Otherwise, the test passes without errors each run. > > Signed-off-by: Andy Chiu <andy.chiu@sifive.com> > --- > .../testing/selftests/riscv/vector/.gitignore | 1 + > tools/testing/selftests/riscv/vector/Makefile | 6 +- > .../selftests/riscv/vector/v_initval_nolibc.c | 68 +++++++++++++++++++ > 3 files changed, 74 insertions(+), 1 deletion(-) > create mode 100644 tools/testing/selftests/riscv/vector/v_initval_nolibc.c > > diff --git a/tools/testing/selftests/riscv/vector/.gitignore b/tools/testing/selftests/riscv/vector/.gitignore > index 4f2b4e8a3b08..9ae7964491d5 100644 > --- a/tools/testing/selftests/riscv/vector/.gitignore > +++ b/tools/testing/selftests/riscv/vector/.gitignore > @@ -1,2 +1,3 @@ > vstate_exec_nolibc > vstate_prctl > +v_initval_nolibc > diff --git a/tools/testing/selftests/riscv/vector/Makefile b/tools/testing/selftests/riscv/vector/Makefile > index cd6e80bf995d..bfff0ff4f3be 100644 > --- a/tools/testing/selftests/riscv/vector/Makefile > +++ b/tools/testing/selftests/riscv/vector/Makefile > @@ -2,7 +2,7 @@ > # Copyright (C) 2021 ARM Limited > # Originally tools/testing/arm64/abi/Makefile > > -TEST_GEN_PROGS := vstate_prctl > +TEST_GEN_PROGS := vstate_prctl v_initval_nolibc > TEST_GEN_PROGS_EXTENDED := vstate_exec_nolibc > > include ../../lib.mk > @@ -13,3 +13,7 @@ $(OUTPUT)/vstate_prctl: vstate_prctl.c ../hwprobe/sys_hwprobe.S > $(OUTPUT)/vstate_exec_nolibc: vstate_exec_nolibc.c > $(CC) -nostdlib -static -include ../../../../include/nolibc/nolibc.h \ > -Wall $(CFLAGS) $(LDFLAGS) $^ -o $@ -lgcc > + > +$(OUTPUT)/v_initval_nolibc: v_initval_nolibc.c > + $(CC) -nostdlib -static -include ../../../../include/nolibc/nolibc.h \ > + -Wall $(CFLAGS) $(LDFLAGS) $^ -o $@ -lgcc Hmm, does this build with clang? (No, bigge on my end, and can be fixed later.) > diff --git a/tools/testing/selftests/riscv/vector/v_initval_nolibc.c b/tools/testing/selftests/riscv/vector/v_initval_nolibc.c > new file mode 100644 > index 000000000000..66764edb0d52 > --- /dev/null > +++ b/tools/testing/selftests/riscv/vector/v_initval_nolibc.c > @@ -0,0 +1,68 @@ > +// SPDX-License-Identifier: GPL-2.0-only > + > +#include "../../kselftest.h" > +#define MAX_VSIZE (8192 * 32) > + > +void dump(char *ptr, int size) > +{ > + int i = 0; > + > + for (i = 0; i < size; i++) { > + if (i != 0) { > + if (i % 16 == 0) > + printf("\n"); > + else if (i % 8 == 0) > + printf(" "); > + } > + printf("%02x ", ptr[i]); > + } > + printf("\n"); > +} > + > +int main(void) > +{ > + int i; > + unsigned long vl; > + char *datap, *tmp; > + > + datap = malloc(MAX_VSIZE); > + if (!datap) { > + ksft_test_result_fail("fail to allocate memory for size = %lu\n", MAX_VSIZE); > + exit(-1); > + } > + > + tmp = datap; > + asm volatile ( > + ".option push\n\t" > + ".option arch, +v\n\t" > + "vsetvli %0, x0, e8, m8, ta, ma\n\t" > + "vse8.v v0, (%2)\n\t" > + "add %1, %2, %0\n\t" > + "vse8.v v8, (%1)\n\t" > + "add %1, %1, %0\n\t" > + "vse8.v v16, (%1)\n\t" > + "add %1, %1, %0\n\t" > + "vse8.v v24, (%1)\n\t" > + ".option pop\n\t" > + : "=&r" (vl), "=r" (tmp) : "r" (datap) : "memory"); > + > + ksft_print_msg("vl = %lu\n", vl); > + > + if (datap[0] != 0x00 && datap[0] != 0xff) { > + ksft_test_result_fail("v-regesters are not properly initialized\n"); Nit: "v-registers" > + dump(datap, vl * 4); > + exit(-1); > + } > + > + for (i = 1; i < vl * 4; i++) { > + if (datap[i] != datap[0]) { > + ksft_test_result_fail("detect stale values on v-regesters\n"); Nit (dito): "v-registers", and maybe "detected". With, or without the changes above, Reviewed-by: Björn Töpel <bjorn@rivosinc.com> Björn _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [v1, 2/2] selftests: Test RISC-V Vector's first-use handler 2023-06-27 7:46 ` Björn Töpel @ 2023-06-27 15:39 ` Andy Chiu 0 siblings, 0 replies; 8+ messages in thread From: Andy Chiu @ 2023-06-27 15:39 UTC (permalink / raw) To: Björn Töpel Cc: linux-riscv, palmer, paul.walmsley, vineetg, greentime.hu, guoren, bjorn, Shuah Khan, Albert Ou On Tue, Jun 27, 2023 at 3:46 PM Björn Töpel <bjorn@kernel.org> wrote: > > Andy Chiu <andy.chiu@sifive.com> writes: > > > This add a test to check if the kernel zero-initializes all V registers > > after the first-use trap handler returns. > > > > If V registers are not zero-initialized, then the test should fail one > > out of several runs: > > > > ``` > > root@sifive-fpga:~# ./v_initval_nolibc > > # vl = 256 > > not ok 1 detect stale values on v-regesters > > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > > 0 4c 41 4e 47 3d 43 0 50 41 54 48 3d 2f 75 73 > > 72 2f 6c 6f 63 61 6c 2f 73 62 69 6e 3a 2f 75 73 > > 72 2f 6c 6f 63 61 6c 2f 62 69 6e 3a 2f 75 73 72 > > ff ff 81 0 0 0 0 0 0 0 0 0 0 0 0 0 > > ``` > > > > Otherwise, the test passes without errors each run. > > > > Signed-off-by: Andy Chiu <andy.chiu@sifive.com> > > --- > > .../testing/selftests/riscv/vector/.gitignore | 1 + > > tools/testing/selftests/riscv/vector/Makefile | 6 +- > > .../selftests/riscv/vector/v_initval_nolibc.c | 68 +++++++++++++++++++ > > 3 files changed, 74 insertions(+), 1 deletion(-) > > create mode 100644 tools/testing/selftests/riscv/vector/v_initval_nolibc.c > > > > diff --git a/tools/testing/selftests/riscv/vector/.gitignore b/tools/testing/selftests/riscv/vector/.gitignore > > index 4f2b4e8a3b08..9ae7964491d5 100644 > > --- a/tools/testing/selftests/riscv/vector/.gitignore > > +++ b/tools/testing/selftests/riscv/vector/.gitignore > > @@ -1,2 +1,3 @@ > > vstate_exec_nolibc > > vstate_prctl > > +v_initval_nolibc > > diff --git a/tools/testing/selftests/riscv/vector/Makefile b/tools/testing/selftests/riscv/vector/Makefile > > index cd6e80bf995d..bfff0ff4f3be 100644 > > --- a/tools/testing/selftests/riscv/vector/Makefile > > +++ b/tools/testing/selftests/riscv/vector/Makefile > > @@ -2,7 +2,7 @@ > > # Copyright (C) 2021 ARM Limited > > # Originally tools/testing/arm64/abi/Makefile > > > > -TEST_GEN_PROGS := vstate_prctl > > +TEST_GEN_PROGS := vstate_prctl v_initval_nolibc > > TEST_GEN_PROGS_EXTENDED := vstate_exec_nolibc > > > > include ../../lib.mk > > @@ -13,3 +13,7 @@ $(OUTPUT)/vstate_prctl: vstate_prctl.c ../hwprobe/sys_hwprobe.S > > $(OUTPUT)/vstate_exec_nolibc: vstate_exec_nolibc.c > > $(CC) -nostdlib -static -include ../../../../include/nolibc/nolibc.h \ > > -Wall $(CFLAGS) $(LDFLAGS) $^ -o $@ -lgcc > > + > > +$(OUTPUT)/v_initval_nolibc: v_initval_nolibc.c > > + $(CC) -nostdlib -static -include ../../../../include/nolibc/nolibc.h \ > > + -Wall $(CFLAGS) $(LDFLAGS) $^ -o $@ -lgcc > > Hmm, does this build with clang? (No, bigge on my end, and can be fixed > later.) Oops, I didn't try. I will respin the series if clang runs into problems. I am not very confident here, but do we need to gate build these tests if CONFIG_RISCV_ISA_V is not set? If my code fits clang well then it probably would be some toolchain dependency issues (guessing the ".option arch" part). Kconfig should be able to resolve this part. > > > diff --git a/tools/testing/selftests/riscv/vector/v_initval_nolibc.c b/tools/testing/selftests/riscv/vector/v_initval_nolibc.c > > new file mode 100644 > > index 000000000000..66764edb0d52 > > --- /dev/null > > +++ b/tools/testing/selftests/riscv/vector/v_initval_nolibc.c > > @@ -0,0 +1,68 @@ > > +// SPDX-License-Identifier: GPL-2.0-only > > + > > +#include "../../kselftest.h" > > +#define MAX_VSIZE (8192 * 32) > > + > > +void dump(char *ptr, int size) > > +{ > > + int i = 0; > > + > > + for (i = 0; i < size; i++) { > > + if (i != 0) { > > + if (i % 16 == 0) > > + printf("\n"); > > + else if (i % 8 == 0) > > + printf(" "); > > + } > > + printf("%02x ", ptr[i]); > > + } > > + printf("\n"); > > +} > > + > > +int main(void) > > +{ > > + int i; > > + unsigned long vl; > > + char *datap, *tmp; > > + > > + datap = malloc(MAX_VSIZE); > > + if (!datap) { > > + ksft_test_result_fail("fail to allocate memory for size = %lu\n", MAX_VSIZE); > > + exit(-1); > > + } > > + > > + tmp = datap; > > + asm volatile ( > > + ".option push\n\t" > > + ".option arch, +v\n\t" > > + "vsetvli %0, x0, e8, m8, ta, ma\n\t" > > + "vse8.v v0, (%2)\n\t" > > + "add %1, %2, %0\n\t" > > + "vse8.v v8, (%1)\n\t" > > + "add %1, %1, %0\n\t" > > + "vse8.v v16, (%1)\n\t" > > + "add %1, %1, %0\n\t" > > + "vse8.v v24, (%1)\n\t" > > + ".option pop\n\t" > > + : "=&r" (vl), "=r" (tmp) : "r" (datap) : "memory"); > > + > > + ksft_print_msg("vl = %lu\n", vl); > > + > > + if (datap[0] != 0x00 && datap[0] != 0xff) { > > + ksft_test_result_fail("v-regesters are not properly initialized\n"); > > Nit: "v-registers" > > > + dump(datap, vl * 4); > > + exit(-1); > > + } > > + > > + for (i = 1; i < vl * 4; i++) { > > + if (datap[i] != datap[0]) { > > + ksft_test_result_fail("detect stale values on v-regesters\n"); > > Nit (dito): "v-registers", and maybe "detected". > > > With, or without the changes above, > Reviewed-by: Björn Töpel <bjorn@rivosinc.com> > > Björn Thanks, Andy _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [v1, 0/2] Initialize Vector registers in the first-use trap 2023-06-27 1:55 [v1, 0/2] Initialize Vector registers in the first-use trap Andy Chiu 2023-06-27 1:55 ` [v1, 1/2] riscv: vector: clear V-reg " Andy Chiu 2023-06-27 1:55 ` [v1, 2/2] selftests: Test RISC-V Vector's first-use handler Andy Chiu @ 2023-07-04 14:42 ` Palmer Dabbelt 2023-07-04 15:02 ` patchwork-bot+linux-riscv 3 siblings, 0 replies; 8+ messages in thread From: Palmer Dabbelt @ 2023-07-04 14:42 UTC (permalink / raw) To: linux-riscv, Palmer Dabbelt, Paul Walmsley, Andy Chiu Cc: Vineet Gupta, greentime.hu, Bjorn Topel, Albert Ou, Guo Ren On Tue, 27 Jun 2023 01:55:53 +0000, Andy Chiu wrote: > Before applying this series, We only initialize the space for saving > Vector registers. This is not enough as Vector registers themselves also > neeeded to be initialized before dropping back into userspace. Or, we > may risk leaking a process's data left in Vector register to another > process. This can be verified by only applying the second patch and > running the test. > > [...] Applied, thanks! [1/2] riscv: vector: clear V-reg in the first-use trap https://git.kernel.org/palmer/c/75b59f2a90aa [2/2] selftests: Test RISC-V Vector's first-use handler https://git.kernel.org/palmer/c/5c93c4c72fbc Best regards, -- Palmer Dabbelt <palmer@rivosinc.com> _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [v1, 0/2] Initialize Vector registers in the first-use trap 2023-06-27 1:55 [v1, 0/2] Initialize Vector registers in the first-use trap Andy Chiu ` (2 preceding siblings ...) 2023-07-04 14:42 ` [v1, 0/2] Initialize Vector registers in the first-use trap Palmer Dabbelt @ 2023-07-04 15:02 ` patchwork-bot+linux-riscv 3 siblings, 0 replies; 8+ messages in thread From: patchwork-bot+linux-riscv @ 2023-07-04 15:02 UTC (permalink / raw) To: Andy Chiu Cc: linux-riscv, palmer, paul.walmsley, vineetg, greentime.hu, guoren, bjorn, aou Hello: This series was applied to riscv/linux.git (for-next) by Palmer Dabbelt <palmer@rivosinc.com>: On Tue, 27 Jun 2023 01:55:53 +0000 you wrote: > Before applying this series, We only initialize the space for saving > Vector registers. This is not enough as Vector registers themselves also > neeeded to be initialized before dropping back into userspace. Or, we > may risk leaking a process's data left in Vector register to another > process. This can be verified by only applying the second patch and > running the test. > > [...] Here is the summary with links: - [v1,1/2] riscv: vector: clear V-reg in the first-use trap https://git.kernel.org/riscv/c/75b59f2a90aa - [v1,2/2] selftests: Test RISC-V Vector's first-use handler https://git.kernel.org/riscv/c/5c93c4c72fbc You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-07-04 15:02 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-06-27 1:55 [v1, 0/2] Initialize Vector registers in the first-use trap Andy Chiu 2023-06-27 1:55 ` [v1, 1/2] riscv: vector: clear V-reg " Andy Chiu 2023-06-27 7:28 ` Björn Töpel 2023-06-27 1:55 ` [v1, 2/2] selftests: Test RISC-V Vector's first-use handler Andy Chiu 2023-06-27 7:46 ` Björn Töpel 2023-06-27 15:39 ` Andy Chiu 2023-07-04 14:42 ` [v1, 0/2] Initialize Vector registers in the first-use trap Palmer Dabbelt 2023-07-04 15:02 ` patchwork-bot+linux-riscv
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox