powerpc: Use common syscall handler type
authorRohan McLure <rmclure@linux.ibm.com>
Wed, 21 Sep 2022 06:55:58 +0000 (16:55 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 28 Sep 2022 09:22:09 +0000 (19:22 +1000)
commit8640de0dee49cec50040d9845a2bc96fd15adc9e
treea46b6ff4196c2cd9c57396a44a13d4d691b77cf6
parent39859aea411b1696c6bc0c04bd2b5095ddba6196
powerpc: Use common syscall handler type

Cause syscall handlers to be typed as follows when called indirectly
throughout the kernel. This is to allow for better type checking.

typedef long (*syscall_fn)(unsigned long, unsigned long, unsigned long,
                           unsigned long, unsigned long, unsigned long);

Since both 32 and 64-bit abis allow for at least the first six
machine-word length parameters to a function to be passed by registers,
even handlers which admit fewer than six parameters may be viewed as
having the above type.

Coercing syscalls to syscall_fn requires a cast to void* to avoid
-Wcast-function-type.

Fixup comparisons in VDSO to avoid pointer-integer comparison. Introduce
explicit cast on systems with SPUs.

Signed-off-by: Rohan McLure <rmclure@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220921065605.1051927-19-rmclure@linux.ibm.com
arch/powerpc/include/asm/syscall.h
arch/powerpc/include/asm/syscalls.h
arch/powerpc/kernel/syscall.c
arch/powerpc/kernel/systbl.c
arch/powerpc/kernel/vdso.c
arch/powerpc/platforms/cell/spu_callbacks.c