Re: [PATCH v2 1/7] powerpc: properly negate error in syscall_set_return_value()

Christophe Leroy
2025-01-13T17:50:03Z

Le 13/01/2025 à 18:10, Dmitry V. Levin a écrit :
> Bring syscall_set_return_value() in sync with syscall_get_error(),
> and let upcoming ptrace/set_syscall_info selftest pass on powerpc.
>
> This reverts commit 1b1a3702a65c ("powerpc: Don't negate error in
> syscall_set_return_value()").

There is a clear detailed explanation in that commit of why it needs to
be done.

If you think that commit is wrong you have to explain why with at least
the same level of details.

>
> Signed-off-by: Dmitry V. Levin <ldv@strace.io>
> ---
> arch/powerpc/include/asm/syscall.h | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/include/asm/syscall.h b/arch/powerpc/include/asm/syscall.h
> index 3dd36c5e334a..422d7735ace6 100644
> --- a/arch/powerpc/include/asm/syscall.h
> +++ b/arch/powerpc/include/asm/syscall.h
> @@ -82,7 +82,11 @@ static inline void syscall_set_return_value(struct task_struct *task,
> */
> if (error) {
> regs->ccr |= 0x10000000L;
> - regs->gpr[3] = error;
> + /*
> + * In case of an error regs->gpr[3] contains
> + * a positive ERRORCODE.
> + */
> + regs->gpr[3] = -error;
> } else {
> regs->ccr &= ~0x10000000L;
> regs->gpr[3] = val;