Message ID | 20231123142708.261733-1-ben.dooks@codethink.co.uk (mailing list archive) |
---|---|
State | Accepted |
Commit | 869436dae72acf1629b41437e9d08d31a7360fdb |
Headers | show |
Series | riscv; fix __user annotation in save_v_state() | expand |
Hello: This patch was applied to riscv/linux.git (for-next) by Palmer Dabbelt <palmer@rivosinc.com>: On Thu, 23 Nov 2023 14:27:08 +0000 you wrote: > The save_v_state() is technically sending a __user pointer through > __put_user() and thus is generating a sparse warning so force the > value to be "void *" to fix: > > arch/riscv/kernel/signal.c:94:16: warning: incorrect type in initializer (different address spaces) > arch/riscv/kernel/signal.c:94:16: expected void *__val > arch/riscv/kernel/signal.c:94:16: got void [noderef] __user *[assigned] datap > Fixes: 8ee0b41898fa26f66e32 ("riscv: signal: Add sigcontext save/restore for vector") > Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> > > [...] Here is the summary with links: - riscv; fix __user annotation in save_v_state() https://git.kernel.org/riscv/c/869436dae72a You are awesome, thank you!
diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c index 88b6220b2608..33dfb5078301 100644 --- a/arch/riscv/kernel/signal.c +++ b/arch/riscv/kernel/signal.c @@ -91,7 +91,7 @@ static long save_v_state(struct pt_regs *regs, void __user **sc_vec) err = __copy_to_user(&state->v_state, ¤t->thread.vstate, offsetof(struct __riscv_v_ext_state, datap)); /* Copy the pointer datap itself. */ - err |= __put_user(datap, &state->v_state.datap); + err |= __put_user((__force void *)datap, &state->v_state.datap); /* Copy the whole vector content to user space datap. */ err |= __copy_to_user(datap, current->thread.vstate.datap, riscv_v_vsize); /* Copy magic to the user space after saving all vector conetext */
The save_v_state() is technically sending a __user pointer through __put_user() and thus is generating a sparse warning so force the value to be "void *" to fix: arch/riscv/kernel/signal.c:94:16: warning: incorrect type in initializer (different address spaces) arch/riscv/kernel/signal.c:94:16: expected void *__val arch/riscv/kernel/signal.c:94:16: got void [noderef] __user *[assigned] datap Fixes: 8ee0b41898fa26f66e32 ("riscv: signal: Add sigcontext save/restore for vector") Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> --- arch/riscv/kernel/signal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)