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 <[email protected]>
---
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;