powerpc/32: Remove powerpc select specialisation
authorRohan McLure <rmclure@linux.ibm.com>
Wed, 21 Sep 2022 06:55:51 +0000 (16:55 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 26 Sep 2022 13:00:15 +0000 (23:00 +1000)
commitb6b1334c9510e162bd8ca0ae58403cafad9572f1
treeceea5be25758dd56fe846b0f8a4d80b5bd6d5c5a
parentc2e7a19827eec443a7cbe85e8d959052412d6dc3
powerpc/32: Remove powerpc select specialisation

Syscall #82 has been implemented for 32-bit platforms in a unique way on
powerpc systems. This hack will in effect guess whether the caller is
expecting new select semantics or old select semantics. It does so via a
guess, based off the first parameter. In new select, this parameter
represents the length of a user-memory array of file descriptors, and in
old select this is a pointer to an arguments structure.

The heuristic simply interprets sufficiently large values of its first
parameter as being a call to old select. The following is a discussion
on how this syscall should be handled.

As discussed in this thread, the existence of such a hack suggests that for
whatever powerpc binaries may predate glibc, it is most likely that they
would have taken use of the old select semantics. x86 and arm64 both
implement this syscall with oldselect semantics.

Remove the powerpc implementation, and update syscall.tbl to refer to emit
a reference to sys_old_select and compat_sys_old_select
for 32-bit binaries, in keeping with how other architectures support
syscall #82.

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/lkml/13737de5-0eb7-e881-9af0-163b0d29a1a0@csgroup.eu/
Link: https://lore.kernel.org/r/20220921065605.1051927-12-rmclure@linux.ibm.com
arch/powerpc/include/asm/syscalls.h
arch/powerpc/kernel/syscalls.c
arch/powerpc/kernel/syscalls/syscall.tbl
tools/perf/arch/powerpc/entry/syscalls/syscall.tbl