Thread (7 messages) 7 messages, 5 authors, 2022-10-30

Re: [PATCH 1/2] powerpc/32: fix syscall wrappers with 64-bit arguments of unaligned register-pairs

From: Andrew Donnellan <hidden>
Date: 2022-10-12 07:57:17

On Wed, 2022-10-12 at 13:53 +1000, Nicholas Piggin wrote:
powerpc 32-bit system call (and function) calling convention for 64-
bit
arguments requires the next available odd-pair (two sequential
registers
with the first being odd-numbered) from the standard register
argument
allocation.

The first argument register is r3, so a 64-bit argument that appears
at
an even position in the argument list must skip a register (unless
there
were preceeding 64-bit arguments, which might throw things off). This
requires non-standard compat definitions to deal with the holes in
the
argument register allocation.

With pt_regs syscall wrappers which use a standard mapper to map
pt_regs
GPRs to function arguments, 32-bit kernels hit the same basic
problem,
the standard definitions don't cope with the unused argument
registers.

Fix this by having 32-bit kernels share those syscall definitions
with
compat.

Thanks to Jason for spending a lot of time finding and bisecting this
and
developing a trivial reproducer. The perfect bug report.

Reported-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
Fixes: 7e92e01b72452 ("powerpc: Provide syscall wrapper")

-- 
Andrew Donnellan    OzLabs, ADL Canberra
ajd@linux.ibm.com   IBM Australia Limited
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help