aboutsummaryrefslogtreecommitdiff
path: root/lib/test_fortify/write_overflow-strncpy-src.c
diff options
context:
space:
mode:
authorBjörn Töpel <[email protected]>2023-04-03 08:52:07 +0200
committerPalmer Dabbelt <[email protected]>2023-04-11 08:25:29 -0700
commit9c2598d43510eff09c658f9c0e0f921ba1871c4b (patch)
treee1f96c7d2da401538346861fb5bb904495275891 /lib/test_fortify/write_overflow-strncpy-src.c
parentd34a6b715a23ccd9c9d0bc7a475bea59dc3e28b2 (diff)
riscv: entry: Save a0 prior syscall_enter_from_user_mode()
The RISC-V calling convention passes the first argument, and the return value in the a0 register. For this reason, the a0 register needs some extra care; When handling syscalls, the a0 register is saved into regs->orig_a0, so a0 can be properly restored for, e.g. interrupted syscalls. This functionality was broken with the introduction of the generic entry patches. Here, a0 was saved into orig_a0 after calling syscall_enter_from_user_mode(), which can change regs->a0 for some paths, incorrectly restoring a0. This is resolved, by saving a0 prior doing the syscall_enter_from_user_mode() call. Fixes: f0bddf50586d ("riscv: entry: Convert to generic entry") Reviewed-by: Heiko Stuebner <[email protected]> Tested-by: Heiko Stuebner <[email protected]> Signed-off-by: Björn Töpel <[email protected]> Reported-by: Conor Dooley <[email protected]> Reviewed-by: Conor Dooley <[email protected]> Tested-by: Conor Dooley <[email protected]> Tested-by: Geert Uytterhoeven <[email protected]> Tested-by: Andy Chiu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Palmer Dabbelt <[email protected]>
Diffstat (limited to 'lib/test_fortify/write_overflow-strncpy-src.c')
0 files changed, 0 insertions, 0 deletions