aboutsummaryrefslogtreecommitdiff
path: root/arch/i386
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2020-08-08 20:59:26 -0400
committerRich Felker <dalias@aerifal.cx>2020-08-08 20:59:26 -0400
commitc2feda4e2ea61f4da73f2f38b2be5e327a7d1a91 (patch)
tree4cba60bff388fa9e873e93b2ee92ee641826896c /arch/i386
parent933f8e72ebbe3a456acd24eb1c910980e6c6ef91 (diff)
downloadmusl-c2feda4e2ea61f4da73f2f38b2be5e327a7d1a91.tar.gz
musl-c2feda4e2ea61f4da73f2f38b2be5e327a7d1a91.tar.xz
musl-c2feda4e2ea61f4da73f2f38b2be5e327a7d1a91.zip
prefer new socket syscalls, fallback to SYS_socketcall only if needed
a number of users performing seccomp filtering have requested use of the new individual syscall numbers for socket syscalls, rather than the legacy multiplexed socketcall, since the latter has the arguments all in memory where they can't participate in filter decisions. previously, some archs used the multiplexed socketcall if it was historically all that was available, while other archs used the separate syscalls. the intent was that the latter set only include archs that have "always" had separate socket syscalls, at least going back to linux 2.6.0. however, at least powerpc, powerpc64, and sh were wrongly included in this set, and thus socket operations completely failed on old kernels for these archs. with the changes made here, the separate syscalls are always preferred, but fallback code is compiled for archs that also define SYS_socketcall. two such archs, mips (plain o32) and microblaze, define SYS_socketcall despite never having needed it, so it's now undefined by their versions of syscall_arch.h to prevent inclusion of useless fallback code. some archs, where the separate syscalls were only added after the addition of SYS_accept4, lack SYS_accept. because socket calls are always made with zeros in the unused argument positions, it suffices to just use SYS_accept4 to provide a definition of SYS_accept, and this is done to make happy the macro machinery that concatenates the socket call name onto __SC_ and SYS_.
Diffstat (limited to 'arch/i386')
-rw-r--r--arch/i386/syscall_arch.h2
1 files changed, 0 insertions, 2 deletions
diff --git a/arch/i386/syscall_arch.h b/arch/i386/syscall_arch.h
index 69642e57..f92b7aa9 100644
--- a/arch/i386/syscall_arch.h
+++ b/arch/i386/syscall_arch.h
@@ -87,5 +87,3 @@ static inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a
#define VDSO_CGT32_VER "LINUX_2.6"
#define VDSO_CGT_SYM "__vdso_clock_gettime64"
#define VDSO_CGT_VER "LINUX_2.6"
-
-#define SYSCALL_USE_SOCKETCALL