Skip to content

Commit 0d6040d

Browse files
committed
arch: add split IPC system calls where needed
The IPC system call handling is highly inconsistent across architectures, some use sys_ipc, some use separate calls, and some use both. We also have some architectures that require passing IPC_64 in the flags, and others that set it implicitly. For the addition of a y2038 safe semtimedop() system call, I chose to only support the separate entry points, but that requires first supporting the regular ones with their own syscall numbers. The IPC_64 is now implied by the new semctl/shmctl/msgctl system calls even on the architectures that require passing it with the ipc() multiplexer. I'm not adding the new semtimedop() or semop() on 32-bit architectures, those will get implemented using the new semtimedop_time64() version that gets added along with the other time64 calls. Three 64-bit architectures (powerpc, s390 and sparc) get semtimedop(). Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
1 parent 275f221 commit 0d6040d

File tree

9 files changed

+84
-0
lines changed

9 files changed

+84
-0
lines changed

arch/m68k/kernel/syscalls/syscall.tbl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,3 +388,14 @@
388388
378 common pwritev2 sys_pwritev2
389389
379 common statx sys_statx
390390
380 common seccomp sys_seccomp
391+
# room for arch specific calls
392+
393 common semget sys_semget
393+
394 common semctl sys_semctl
394+
395 common shmget sys_shmget
395+
396 common shmctl sys_shmctl
396+
397 common shmat sys_shmat
397+
398 common shmdt sys_shmdt
398+
399 common msgget sys_msgget
399+
400 common msgsnd sys_msgsnd
400+
401 common msgrcv sys_msgrcv
401+
402 common msgctl sys_msgctl

arch/mips/kernel/syscalls/syscall_o32.tbl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,3 +380,14 @@
380380
366 o32 statx sys_statx
381381
367 o32 rseq sys_rseq
382382
368 o32 io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents
383+
# room for arch specific calls
384+
393 o32 semget sys_semget
385+
394 o32 semctl sys_semctl compat_sys_semctl
386+
395 o32 shmget sys_shmget
387+
396 o32 shmctl sys_shmctl compat_sys_shmctl
388+
397 o32 shmat sys_shmat compat_sys_shmat
389+
398 o32 shmdt sys_shmdt
390+
399 o32 msgget sys_msgget
391+
400 o32 msgsnd sys_msgsnd compat_sys_msgsnd
392+
401 o32 msgrcv sys_msgrcv compat_sys_msgrcv
393+
402 o32 msgctl sys_msgctl compat_sys_msgctl

arch/powerpc/kernel/syscalls/syscall.tbl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@
414414
363 spu switch_endian sys_ni_syscall
415415
364 common userfaultfd sys_userfaultfd
416416
365 common membarrier sys_membarrier
417+
# 366-377 originally left for IPC, now unused
417418
378 nospu mlock2 sys_mlock2
418419
379 nospu copy_file_range sys_copy_file_range
419420
380 common preadv2 sys_preadv2 compat_sys_preadv2
@@ -425,3 +426,15 @@
425426
386 nospu pkey_mprotect sys_pkey_mprotect
426427
387 nospu rseq sys_rseq
427428
388 nospu io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents
429+
# room for arch specific syscalls
430+
392 64 semtimedop sys_semtimedop
431+
393 common semget sys_semget
432+
394 common semctl sys_semctl compat_sys_semctl
433+
395 common shmget sys_shmget
434+
396 common shmctl sys_shmctl compat_sys_shmctl
435+
397 common shmat sys_shmat compat_sys_shmat
436+
398 common shmdt sys_shmdt
437+
399 common msgget sys_msgget
438+
400 common msgsnd sys_msgsnd compat_sys_msgsnd
439+
401 common msgrcv sys_msgrcv compat_sys_msgrcv
440+
402 common msgctl sys_msgctl compat_sys_msgctl

arch/s390/kernel/syscalls/syscall.tbl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,3 +391,15 @@
391391
381 common kexec_file_load sys_kexec_file_load sys_kexec_file_load
392392
382 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents
393393
383 common rseq sys_rseq sys_rseq
394+
# room for arch specific syscalls
395+
392 64 semtimedop sys_semtimedop -
396+
393 common semget sys_semget sys_semget
397+
394 common semctl sys_semctl compat_sys_semctl
398+
395 common shmget sys_shmget sys_shmget
399+
396 common shmctl sys_shmctl compat_sys_shmctl
400+
397 common shmat sys_shmat compat_sys_shmat
401+
398 common shmdt sys_shmdt sys_shmdt
402+
399 common msgget sys_msgget sys_msgget
403+
400 common msgsnd sys_msgsnd compat_sys_msgsnd
404+
401 common msgrcv sys_msgrcv compat_sys_msgrcv
405+
402 common msgctl sys_msgctl compat_sys_msgctl

arch/sh/kernel/syscalls/syscall.tbl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,3 +391,14 @@
391391
381 common preadv2 sys_preadv2
392392
382 common pwritev2 sys_pwritev2
393393
383 common statx sys_statx
394+
# room for arch specific syscalls
395+
393 common semget sys_semget
396+
394 common semctl sys_semctl
397+
395 common shmget sys_shmget
398+
396 common shmctl sys_shmctl
399+
397 common shmat sys_shmat
400+
398 common shmdt sys_shmdt
401+
399 common msgget sys_msgget
402+
400 common msgsnd sys_msgsnd
403+
401 common msgrcv sys_msgrcv
404+
402 common msgctl sys_msgctl

arch/sparc/kernel/syscalls/syscall.tbl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,3 +407,15 @@
407407
359 common pwritev2 sys_pwritev2 compat_sys_pwritev2
408408
360 common statx sys_statx
409409
361 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents
410+
# room for arch specific syscalls
411+
392 64 semtimedop sys_semtimedop
412+
393 common semget sys_semget
413+
394 common semctl sys_semctl compat_sys_semctl
414+
395 common shmget sys_shmget
415+
396 common shmctl sys_shmctl compat_sys_shmctl
416+
397 common shmat sys_shmat compat_sys_shmat
417+
398 common shmdt sys_shmdt
418+
399 common msgget sys_msgget
419+
400 common msgsnd sys_msgsnd compat_sys_msgsnd
420+
401 common msgrcv sys_msgrcv compat_sys_msgrcv
421+
402 common msgctl sys_msgctl compat_sys_msgctl

arch/x86/entry/syscalls/syscall_32.tbl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,3 +398,14 @@
398398
384 i386 arch_prctl sys_arch_prctl __ia32_compat_sys_arch_prctl
399399
385 i386 io_pgetevents sys_io_pgetevents __ia32_compat_sys_io_pgetevents
400400
386 i386 rseq sys_rseq __ia32_sys_rseq
401+
# don't use numbers 387 through 392, add new calls at the end
402+
393 i386 semget sys_semget __ia32_sys_semget
403+
394 i386 semctl sys_semctl __ia32_compat_sys_semctl
404+
395 i386 shmget sys_shmget __ia32_sys_shmget
405+
396 i386 shmctl sys_shmctl __ia32_compat_sys_shmctl
406+
397 i386 shmat sys_shmat __ia32_compat_sys_shmat
407+
398 i386 shmdt sys_shmdt __ia32_sys_shmdt
408+
399 i386 msgget sys_msgget __ia32_sys_msgget
409+
400 i386 msgsnd sys_msgsnd __ia32_compat_sys_msgsnd
410+
401 i386 msgrcv sys_msgrcv __ia32_compat_sys_msgrcv
411+
402 i386 msgctl sys_msgctl __ia32_compat_sys_msgctl

arch/x86/entry/syscalls/syscall_64.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,8 @@
343343
332 common statx __x64_sys_statx
344344
333 common io_pgetevents __x64_sys_io_pgetevents
345345
334 common rseq __x64_sys_rseq
346+
# don't use numbers 387 through 423, add new calls after the last
347+
# 'common' entry
346348

347349
#
348350
# x32-specific system call numbers start at 512 to avoid cache impact

include/uapi/asm-generic/unistd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,7 @@ __SC_COMP(__NR_io_pgetevents, sys_io_pgetevents, compat_sys_io_pgetevents)
740740
__SYSCALL(__NR_rseq, sys_rseq)
741741
#define __NR_kexec_file_load 294
742742
__SYSCALL(__NR_kexec_file_load, sys_kexec_file_load)
743+
/* 295 through 402 are unassigned to sync up with generic numbers, don't use */
743744

744745
#undef __NR_syscalls
745746
#define __NR_syscalls 295

0 commit comments

Comments
 (0)