| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | # | 
					
						
							|  |  |  | # Linux system call numbers and entry vectors | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # The format is: | 
					
						
							|  |  |  | # <num>	<abi>	<name>			[<entry point>			[<oabi compat entry point>]] | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Where abi is: | 
					
						
							|  |  |  | #  common - for system calls shared between oabi and eabi (may have compat) | 
					
						
							|  |  |  | #  oabi   - for oabi-only system calls (may have compat) | 
					
						
							|  |  |  | #  eabi   - for eabi-only system calls | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # For each syscall number, "common" is mutually exclusive with oabi and eabi | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | 0	common	restart_syscall		sys_restart_syscall | 
					
						
							|  |  |  | 1	common	exit			sys_exit | 
					
						
							|  |  |  | 2	common	fork			sys_fork | 
					
						
							|  |  |  | 3	common	read			sys_read | 
					
						
							|  |  |  | 4	common	write			sys_write | 
					
						
							|  |  |  | 5	common	open			sys_open | 
					
						
							|  |  |  | 6	common	close			sys_close | 
					
						
							|  |  |  | # 7 was sys_waitpid | 
					
						
							|  |  |  | 8	common	creat			sys_creat | 
					
						
							|  |  |  | 9	common	link			sys_link | 
					
						
							|  |  |  | 10	common	unlink			sys_unlink | 
					
						
							|  |  |  | 11	common	execve			sys_execve | 
					
						
							|  |  |  | 12	common	chdir			sys_chdir | 
					
						
							| 
									
										
											  
											
												y2038: rename old time and utime syscalls
The time, stime, utime, utimes, and futimesat system calls are only
used on older architectures, and we do not provide y2038 safe variants
of them, as they are replaced by clock_gettime64, clock_settime64,
and utimensat_time64.
However, for consistency it seems better to have the 32-bit architectures
that still use them call the "time32" entry points (leaving the
traditional handlers for the 64-bit architectures), like we do for system
calls that now require two versions.
Note: We used to always define __ARCH_WANT_SYS_TIME and
__ARCH_WANT_SYS_UTIME and only set __ARCH_WANT_COMPAT_SYS_TIME and
__ARCH_WANT_SYS_UTIME32 for compat mode on 64-bit kernels. Now this is
reversed: only 64-bit architectures set __ARCH_WANT_SYS_TIME/UTIME, while
we need __ARCH_WANT_SYS_TIME32/UTIME32 for 32-bit architectures and compat
mode. The resulting asm/unistd.h changes look a bit counterintuitive.
This is only a cleanup patch and it should not change any behavior.
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>
											
										 
											2019-01-06 23:45:29 +01:00
										 |  |  | 13	oabi	time			sys_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 14	common	mknod			sys_mknod | 
					
						
							|  |  |  | 15	common	chmod			sys_chmod | 
					
						
							|  |  |  | 16	common	lchown			sys_lchown16 | 
					
						
							|  |  |  | # 17 was sys_break | 
					
						
							|  |  |  | # 18 was sys_stat | 
					
						
							|  |  |  | 19	common	lseek			sys_lseek | 
					
						
							|  |  |  | 20	common	getpid			sys_getpid | 
					
						
							|  |  |  | 21	common	mount			sys_mount | 
					
						
							|  |  |  | 22	oabi	umount			sys_oldumount | 
					
						
							|  |  |  | 23	common	setuid			sys_setuid16 | 
					
						
							|  |  |  | 24	common	getuid			sys_getuid16 | 
					
						
							| 
									
										
											  
											
												y2038: rename old time and utime syscalls
The time, stime, utime, utimes, and futimesat system calls are only
used on older architectures, and we do not provide y2038 safe variants
of them, as they are replaced by clock_gettime64, clock_settime64,
and utimensat_time64.
However, for consistency it seems better to have the 32-bit architectures
that still use them call the "time32" entry points (leaving the
traditional handlers for the 64-bit architectures), like we do for system
calls that now require two versions.
Note: We used to always define __ARCH_WANT_SYS_TIME and
__ARCH_WANT_SYS_UTIME and only set __ARCH_WANT_COMPAT_SYS_TIME and
__ARCH_WANT_SYS_UTIME32 for compat mode on 64-bit kernels. Now this is
reversed: only 64-bit architectures set __ARCH_WANT_SYS_TIME/UTIME, while
we need __ARCH_WANT_SYS_TIME32/UTIME32 for 32-bit architectures and compat
mode. The resulting asm/unistd.h changes look a bit counterintuitive.
This is only a cleanup patch and it should not change any behavior.
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>
											
										 
											2019-01-06 23:45:29 +01:00
										 |  |  | 25	oabi	stime			sys_stime32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 26	common	ptrace			sys_ptrace | 
					
						
							|  |  |  | 27	oabi	alarm			sys_alarm | 
					
						
							|  |  |  | # 28 was sys_fstat | 
					
						
							|  |  |  | 29	common	pause			sys_pause | 
					
						
							| 
									
										
											  
											
												y2038: rename old time and utime syscalls
The time, stime, utime, utimes, and futimesat system calls are only
used on older architectures, and we do not provide y2038 safe variants
of them, as they are replaced by clock_gettime64, clock_settime64,
and utimensat_time64.
However, for consistency it seems better to have the 32-bit architectures
that still use them call the "time32" entry points (leaving the
traditional handlers for the 64-bit architectures), like we do for system
calls that now require two versions.
Note: We used to always define __ARCH_WANT_SYS_TIME and
__ARCH_WANT_SYS_UTIME and only set __ARCH_WANT_COMPAT_SYS_TIME and
__ARCH_WANT_SYS_UTIME32 for compat mode on 64-bit kernels. Now this is
reversed: only 64-bit architectures set __ARCH_WANT_SYS_TIME/UTIME, while
we need __ARCH_WANT_SYS_TIME32/UTIME32 for 32-bit architectures and compat
mode. The resulting asm/unistd.h changes look a bit counterintuitive.
This is only a cleanup patch and it should not change any behavior.
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>
											
										 
											2019-01-06 23:45:29 +01:00
										 |  |  | 30	oabi	utime			sys_utime32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | # 31 was sys_stty | 
					
						
							|  |  |  | # 32 was sys_gtty | 
					
						
							|  |  |  | 33	common	access			sys_access | 
					
						
							|  |  |  | 34	common	nice			sys_nice | 
					
						
							|  |  |  | # 35 was sys_ftime | 
					
						
							|  |  |  | 36	common	sync			sys_sync | 
					
						
							|  |  |  | 37	common	kill			sys_kill | 
					
						
							|  |  |  | 38	common	rename			sys_rename | 
					
						
							|  |  |  | 39	common	mkdir			sys_mkdir | 
					
						
							|  |  |  | 40	common	rmdir			sys_rmdir | 
					
						
							|  |  |  | 41	common	dup			sys_dup | 
					
						
							|  |  |  | 42	common	pipe			sys_pipe | 
					
						
							|  |  |  | 43	common	times			sys_times | 
					
						
							|  |  |  | # 44 was sys_prof | 
					
						
							|  |  |  | 45	common	brk			sys_brk | 
					
						
							|  |  |  | 46	common	setgid			sys_setgid16 | 
					
						
							|  |  |  | 47	common	getgid			sys_getgid16 | 
					
						
							|  |  |  | # 48 was sys_signal | 
					
						
							|  |  |  | 49	common	geteuid			sys_geteuid16 | 
					
						
							|  |  |  | 50	common	getegid			sys_getegid16 | 
					
						
							|  |  |  | 51	common	acct			sys_acct | 
					
						
							|  |  |  | 52	common	umount2			sys_umount | 
					
						
							|  |  |  | # 53 was sys_lock | 
					
						
							|  |  |  | 54	common	ioctl			sys_ioctl | 
					
						
							|  |  |  | 55	common	fcntl			sys_fcntl | 
					
						
							|  |  |  | # 56 was sys_mpx | 
					
						
							|  |  |  | 57	common	setpgid			sys_setpgid | 
					
						
							|  |  |  | # 58 was sys_ulimit | 
					
						
							|  |  |  | # 59 was sys_olduname | 
					
						
							|  |  |  | 60	common	umask			sys_umask | 
					
						
							|  |  |  | 61	common	chroot			sys_chroot | 
					
						
							|  |  |  | 62	common	ustat			sys_ustat | 
					
						
							|  |  |  | 63	common	dup2			sys_dup2 | 
					
						
							|  |  |  | 64	common	getppid			sys_getppid | 
					
						
							|  |  |  | 65	common	getpgrp			sys_getpgrp | 
					
						
							|  |  |  | 66	common	setsid			sys_setsid | 
					
						
							|  |  |  | 67	common	sigaction		sys_sigaction | 
					
						
							|  |  |  | # 68 was sys_sgetmask | 
					
						
							|  |  |  | # 69 was sys_ssetmask | 
					
						
							|  |  |  | 70	common	setreuid		sys_setreuid16 | 
					
						
							|  |  |  | 71	common	setregid		sys_setregid16 | 
					
						
							|  |  |  | 72	common	sigsuspend		sys_sigsuspend | 
					
						
							|  |  |  | 73	common	sigpending		sys_sigpending | 
					
						
							|  |  |  | 74	common	sethostname		sys_sethostname | 
					
						
							|  |  |  | 75	common	setrlimit		sys_setrlimit | 
					
						
							|  |  |  | # Back compat 2GB limited rlimit | 
					
						
							|  |  |  | 76	oabi	getrlimit		sys_old_getrlimit | 
					
						
							|  |  |  | 77	common	getrusage		sys_getrusage | 
					
						
							|  |  |  | 78	common	gettimeofday		sys_gettimeofday | 
					
						
							|  |  |  | 79	common	settimeofday		sys_settimeofday | 
					
						
							|  |  |  | 80	common	getgroups		sys_getgroups16 | 
					
						
							|  |  |  | 81	common	setgroups		sys_setgroups16 | 
					
						
							|  |  |  | 82	oabi	select			sys_old_select | 
					
						
							|  |  |  | 83	common	symlink			sys_symlink | 
					
						
							|  |  |  | # 84 was sys_lstat | 
					
						
							|  |  |  | 85	common	readlink		sys_readlink | 
					
						
							|  |  |  | 86	common	uselib			sys_uselib | 
					
						
							|  |  |  | 87	common	swapon			sys_swapon | 
					
						
							|  |  |  | 88	common	reboot			sys_reboot | 
					
						
							|  |  |  | 89	oabi	readdir			sys_old_readdir | 
					
						
							|  |  |  | 90	oabi	mmap			sys_old_mmap | 
					
						
							|  |  |  | 91	common	munmap			sys_munmap | 
					
						
							|  |  |  | 92	common	truncate		sys_truncate | 
					
						
							|  |  |  | 93	common	ftruncate		sys_ftruncate | 
					
						
							|  |  |  | 94	common	fchmod			sys_fchmod | 
					
						
							|  |  |  | 95	common	fchown			sys_fchown16 | 
					
						
							|  |  |  | 96	common	getpriority		sys_getpriority | 
					
						
							|  |  |  | 97	common	setpriority		sys_setpriority | 
					
						
							|  |  |  | # 98 was sys_profil | 
					
						
							|  |  |  | 99	common	statfs			sys_statfs | 
					
						
							|  |  |  | 100	common	fstatfs			sys_fstatfs | 
					
						
							|  |  |  | # 101 was sys_ioperm | 
					
						
							|  |  |  | 102	oabi	socketcall		sys_socketcall		sys_oabi_socketcall | 
					
						
							|  |  |  | 103	common	syslog			sys_syslog | 
					
						
							|  |  |  | 104	common	setitimer		sys_setitimer | 
					
						
							|  |  |  | 105	common	getitimer		sys_getitimer | 
					
						
							|  |  |  | 106	common	stat			sys_newstat | 
					
						
							|  |  |  | 107	common	lstat			sys_newlstat | 
					
						
							|  |  |  | 108	common	fstat			sys_newfstat | 
					
						
							|  |  |  | # 109 was sys_uname | 
					
						
							|  |  |  | # 110 was sys_iopl | 
					
						
							|  |  |  | 111	common	vhangup			sys_vhangup | 
					
						
							|  |  |  | # 112 was sys_idle | 
					
						
							|  |  |  | # syscall to call a syscall! | 
					
						
							|  |  |  | 113	oabi	syscall			sys_syscall | 
					
						
							|  |  |  | 114	common	wait4			sys_wait4 | 
					
						
							|  |  |  | 115	common	swapoff			sys_swapoff | 
					
						
							|  |  |  | 116	common	sysinfo			sys_sysinfo | 
					
						
							|  |  |  | 117	oabi	ipc			sys_ipc			sys_oabi_ipc | 
					
						
							|  |  |  | 118	common	fsync			sys_fsync | 
					
						
							|  |  |  | 119	common	sigreturn		sys_sigreturn_wrapper | 
					
						
							|  |  |  | 120	common	clone			sys_clone | 
					
						
							|  |  |  | 121	common	setdomainname		sys_setdomainname | 
					
						
							|  |  |  | 122	common	uname			sys_newuname | 
					
						
							|  |  |  | # 123 was sys_modify_ldt | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 124	common	adjtimex		sys_adjtimex_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 125	common	mprotect		sys_mprotect | 
					
						
							|  |  |  | 126	common	sigprocmask		sys_sigprocmask | 
					
						
							|  |  |  | # 127 was sys_create_module | 
					
						
							|  |  |  | 128	common	init_module		sys_init_module | 
					
						
							|  |  |  | 129	common	delete_module		sys_delete_module | 
					
						
							|  |  |  | # 130 was sys_get_kernel_syms | 
					
						
							|  |  |  | 131	common	quotactl		sys_quotactl | 
					
						
							|  |  |  | 132	common	getpgid			sys_getpgid | 
					
						
							|  |  |  | 133	common	fchdir			sys_fchdir | 
					
						
							| 
									
										
										
										
											2021-06-29 15:11:44 -05:00
										 |  |  | 134	common	bdflush			sys_ni_syscall | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 135	common	sysfs			sys_sysfs | 
					
						
							|  |  |  | 136	common	personality		sys_personality | 
					
						
							|  |  |  | # 137 was sys_afs_syscall | 
					
						
							|  |  |  | 138	common	setfsuid		sys_setfsuid16 | 
					
						
							|  |  |  | 139	common	setfsgid		sys_setfsgid16 | 
					
						
							|  |  |  | 140	common	_llseek			sys_llseek | 
					
						
							|  |  |  | 141	common	getdents		sys_getdents | 
					
						
							|  |  |  | 142	common	_newselect		sys_select | 
					
						
							|  |  |  | 143	common	flock			sys_flock | 
					
						
							|  |  |  | 144	common	msync			sys_msync | 
					
						
							|  |  |  | 145	common	readv			sys_readv | 
					
						
							|  |  |  | 146	common	writev			sys_writev | 
					
						
							|  |  |  | 147	common	getsid			sys_getsid | 
					
						
							|  |  |  | 148	common	fdatasync		sys_fdatasync | 
					
						
							| 
									
										
										
										
											2020-08-14 17:31:07 -07:00
										 |  |  | 149	common	_sysctl			sys_ni_syscall | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 150	common	mlock			sys_mlock | 
					
						
							|  |  |  | 151	common	munlock			sys_munlock | 
					
						
							|  |  |  | 152	common	mlockall		sys_mlockall | 
					
						
							|  |  |  | 153	common	munlockall		sys_munlockall | 
					
						
							|  |  |  | 154	common	sched_setparam		sys_sched_setparam | 
					
						
							|  |  |  | 155	common	sched_getparam		sys_sched_getparam | 
					
						
							|  |  |  | 156	common	sched_setscheduler	sys_sched_setscheduler | 
					
						
							|  |  |  | 157	common	sched_getscheduler	sys_sched_getscheduler | 
					
						
							|  |  |  | 158	common	sched_yield		sys_sched_yield | 
					
						
							|  |  |  | 159	common	sched_get_priority_max	sys_sched_get_priority_max | 
					
						
							|  |  |  | 160	common	sched_get_priority_min	sys_sched_get_priority_min | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 161	common	sched_rr_get_interval	sys_sched_rr_get_interval_time32 | 
					
						
							|  |  |  | 162	common	nanosleep		sys_nanosleep_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 163	common	mremap			sys_mremap | 
					
						
							|  |  |  | 164	common	setresuid		sys_setresuid16 | 
					
						
							|  |  |  | 165	common	getresuid		sys_getresuid16 | 
					
						
							|  |  |  | # 166 was sys_vm86 | 
					
						
							|  |  |  | # 167 was sys_query_module | 
					
						
							|  |  |  | 168	common	poll			sys_poll | 
					
						
							|  |  |  | 169	common	nfsservctl | 
					
						
							|  |  |  | 170	common	setresgid		sys_setresgid16 | 
					
						
							|  |  |  | 171	common	getresgid		sys_getresgid16 | 
					
						
							|  |  |  | 172	common	prctl			sys_prctl | 
					
						
							|  |  |  | 173	common	rt_sigreturn		sys_rt_sigreturn_wrapper | 
					
						
							|  |  |  | 174	common	rt_sigaction		sys_rt_sigaction | 
					
						
							|  |  |  | 175	common	rt_sigprocmask		sys_rt_sigprocmask | 
					
						
							|  |  |  | 176	common	rt_sigpending		sys_rt_sigpending | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 177	common	rt_sigtimedwait		sys_rt_sigtimedwait_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 178	common	rt_sigqueueinfo		sys_rt_sigqueueinfo | 
					
						
							|  |  |  | 179	common	rt_sigsuspend		sys_rt_sigsuspend | 
					
						
							|  |  |  | 180	common	pread64			sys_pread64		sys_oabi_pread64 | 
					
						
							|  |  |  | 181	common	pwrite64		sys_pwrite64		sys_oabi_pwrite64 | 
					
						
							|  |  |  | 182	common	chown			sys_chown16 | 
					
						
							|  |  |  | 183	common	getcwd			sys_getcwd | 
					
						
							|  |  |  | 184	common	capget			sys_capget | 
					
						
							|  |  |  | 185	common	capset			sys_capset | 
					
						
							|  |  |  | 186	common	sigaltstack		sys_sigaltstack | 
					
						
							|  |  |  | 187	common	sendfile		sys_sendfile | 
					
						
							|  |  |  | # 188 reserved | 
					
						
							|  |  |  | # 189 reserved | 
					
						
							|  |  |  | 190	common	vfork			sys_vfork | 
					
						
							|  |  |  | # SuS compliant getrlimit | 
					
						
							|  |  |  | 191	common	ugetrlimit		sys_getrlimit | 
					
						
							|  |  |  | 192	common	mmap2			sys_mmap2 | 
					
						
							|  |  |  | 193	common	truncate64		sys_truncate64		sys_oabi_truncate64 | 
					
						
							|  |  |  | 194	common	ftruncate64		sys_ftruncate64		sys_oabi_ftruncate64 | 
					
						
							|  |  |  | 195	common	stat64			sys_stat64		sys_oabi_stat64 | 
					
						
							|  |  |  | 196	common	lstat64			sys_lstat64		sys_oabi_lstat64 | 
					
						
							|  |  |  | 197	common	fstat64			sys_fstat64		sys_oabi_fstat64 | 
					
						
							|  |  |  | 198	common	lchown32		sys_lchown | 
					
						
							|  |  |  | 199	common	getuid32		sys_getuid | 
					
						
							|  |  |  | 200	common	getgid32		sys_getgid | 
					
						
							|  |  |  | 201	common	geteuid32		sys_geteuid | 
					
						
							|  |  |  | 202	common	getegid32		sys_getegid | 
					
						
							|  |  |  | 203	common	setreuid32		sys_setreuid | 
					
						
							|  |  |  | 204	common	setregid32		sys_setregid | 
					
						
							|  |  |  | 205	common	getgroups32		sys_getgroups | 
					
						
							|  |  |  | 206	common	setgroups32		sys_setgroups | 
					
						
							|  |  |  | 207	common	fchown32		sys_fchown | 
					
						
							|  |  |  | 208	common	setresuid32		sys_setresuid | 
					
						
							|  |  |  | 209	common	getresuid32		sys_getresuid | 
					
						
							|  |  |  | 210	common	setresgid32		sys_setresgid | 
					
						
							|  |  |  | 211	common	getresgid32		sys_getresgid | 
					
						
							|  |  |  | 212	common	chown32			sys_chown | 
					
						
							|  |  |  | 213	common	setuid32		sys_setuid | 
					
						
							|  |  |  | 214	common	setgid32		sys_setgid | 
					
						
							|  |  |  | 215	common	setfsuid32		sys_setfsuid | 
					
						
							|  |  |  | 216	common	setfsgid32		sys_setfsgid | 
					
						
							|  |  |  | 217	common	getdents64		sys_getdents64 | 
					
						
							|  |  |  | 218	common	pivot_root		sys_pivot_root | 
					
						
							|  |  |  | 219	common	mincore			sys_mincore | 
					
						
							|  |  |  | 220	common	madvise			sys_madvise | 
					
						
							|  |  |  | 221	common	fcntl64			sys_fcntl64		sys_oabi_fcntl64 | 
					
						
							|  |  |  | # 222 for tux | 
					
						
							|  |  |  | # 223 is unused | 
					
						
							|  |  |  | 224	common	gettid			sys_gettid | 
					
						
							|  |  |  | 225	common	readahead		sys_readahead		sys_oabi_readahead | 
					
						
							|  |  |  | 226	common	setxattr		sys_setxattr | 
					
						
							|  |  |  | 227	common	lsetxattr		sys_lsetxattr | 
					
						
							|  |  |  | 228	common	fsetxattr		sys_fsetxattr | 
					
						
							|  |  |  | 229	common	getxattr		sys_getxattr | 
					
						
							|  |  |  | 230	common	lgetxattr		sys_lgetxattr | 
					
						
							|  |  |  | 231	common	fgetxattr		sys_fgetxattr | 
					
						
							|  |  |  | 232	common	listxattr		sys_listxattr | 
					
						
							|  |  |  | 233	common	llistxattr		sys_llistxattr | 
					
						
							|  |  |  | 234	common	flistxattr		sys_flistxattr | 
					
						
							|  |  |  | 235	common	removexattr		sys_removexattr | 
					
						
							|  |  |  | 236	common	lremovexattr		sys_lremovexattr | 
					
						
							|  |  |  | 237	common	fremovexattr		sys_fremovexattr | 
					
						
							|  |  |  | 238	common	tkill			sys_tkill | 
					
						
							|  |  |  | 239	common	sendfile64		sys_sendfile64 | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 240	common	futex			sys_futex_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 241	common	sched_setaffinity	sys_sched_setaffinity | 
					
						
							|  |  |  | 242	common	sched_getaffinity	sys_sched_getaffinity | 
					
						
							|  |  |  | 243	common	io_setup		sys_io_setup | 
					
						
							|  |  |  | 244	common	io_destroy		sys_io_destroy | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 245	common	io_getevents		sys_io_getevents_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 246	common	io_submit		sys_io_submit | 
					
						
							|  |  |  | 247	common	io_cancel		sys_io_cancel | 
					
						
							|  |  |  | 248	common	exit_group		sys_exit_group | 
					
						
							|  |  |  | 249	common	lookup_dcookie		sys_lookup_dcookie | 
					
						
							|  |  |  | 250	common	epoll_create		sys_epoll_create | 
					
						
							|  |  |  | 251	common	epoll_ctl		sys_epoll_ctl		sys_oabi_epoll_ctl | 
					
						
							| 
									
										
										
										
											2021-08-11 08:30:22 +01:00
										 |  |  | 252	common	epoll_wait		sys_epoll_wait | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 253	common	remap_file_pages	sys_remap_file_pages | 
					
						
							|  |  |  | # 254 for set_thread_area | 
					
						
							|  |  |  | # 255 for get_thread_area | 
					
						
							|  |  |  | 256	common	set_tid_address		sys_set_tid_address | 
					
						
							|  |  |  | 257	common	timer_create		sys_timer_create | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 258	common	timer_settime		sys_timer_settime32 | 
					
						
							|  |  |  | 259	common	timer_gettime		sys_timer_gettime32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 260	common	timer_getoverrun	sys_timer_getoverrun | 
					
						
							|  |  |  | 261	common	timer_delete		sys_timer_delete | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 262	common	clock_settime		sys_clock_settime32 | 
					
						
							|  |  |  | 263	common	clock_gettime		sys_clock_gettime32 | 
					
						
							|  |  |  | 264	common	clock_getres		sys_clock_getres_time32 | 
					
						
							|  |  |  | 265	common	clock_nanosleep		sys_clock_nanosleep_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 266	common	statfs64		sys_statfs64_wrapper | 
					
						
							|  |  |  | 267	common	fstatfs64		sys_fstatfs64_wrapper | 
					
						
							|  |  |  | 268	common	tgkill			sys_tgkill | 
					
						
							| 
									
										
											  
											
												y2038: rename old time and utime syscalls
The time, stime, utime, utimes, and futimesat system calls are only
used on older architectures, and we do not provide y2038 safe variants
of them, as they are replaced by clock_gettime64, clock_settime64,
and utimensat_time64.
However, for consistency it seems better to have the 32-bit architectures
that still use them call the "time32" entry points (leaving the
traditional handlers for the 64-bit architectures), like we do for system
calls that now require two versions.
Note: We used to always define __ARCH_WANT_SYS_TIME and
__ARCH_WANT_SYS_UTIME and only set __ARCH_WANT_COMPAT_SYS_TIME and
__ARCH_WANT_SYS_UTIME32 for compat mode on 64-bit kernels. Now this is
reversed: only 64-bit architectures set __ARCH_WANT_SYS_TIME/UTIME, while
we need __ARCH_WANT_SYS_TIME32/UTIME32 for 32-bit architectures and compat
mode. The resulting asm/unistd.h changes look a bit counterintuitive.
This is only a cleanup patch and it should not change any behavior.
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>
											
										 
											2019-01-06 23:45:29 +01:00
										 |  |  | 269	common	utimes			sys_utimes_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 270	common	arm_fadvise64_64	sys_arm_fadvise64_64 | 
					
						
							|  |  |  | 271	common	pciconfig_iobase	sys_pciconfig_iobase | 
					
						
							|  |  |  | 272	common	pciconfig_read		sys_pciconfig_read | 
					
						
							|  |  |  | 273	common	pciconfig_write		sys_pciconfig_write | 
					
						
							|  |  |  | 274	common	mq_open			sys_mq_open | 
					
						
							|  |  |  | 275	common	mq_unlink		sys_mq_unlink | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 276	common	mq_timedsend		sys_mq_timedsend_time32 | 
					
						
							|  |  |  | 277	common	mq_timedreceive		sys_mq_timedreceive_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 278	common	mq_notify		sys_mq_notify | 
					
						
							|  |  |  | 279	common	mq_getsetattr		sys_mq_getsetattr | 
					
						
							|  |  |  | 280	common	waitid			sys_waitid | 
					
						
							|  |  |  | 281	common	socket			sys_socket | 
					
						
							|  |  |  | 282	common	bind			sys_bind		sys_oabi_bind | 
					
						
							|  |  |  | 283	common	connect			sys_connect		sys_oabi_connect | 
					
						
							|  |  |  | 284	common	listen			sys_listen | 
					
						
							|  |  |  | 285	common	accept			sys_accept | 
					
						
							|  |  |  | 286	common	getsockname		sys_getsockname | 
					
						
							|  |  |  | 287	common	getpeername		sys_getpeername | 
					
						
							|  |  |  | 288	common	socketpair		sys_socketpair | 
					
						
							|  |  |  | 289	common	send			sys_send | 
					
						
							|  |  |  | 290	common	sendto			sys_sendto		sys_oabi_sendto | 
					
						
							|  |  |  | 291	common	recv			sys_recv | 
					
						
							|  |  |  | 292	common	recvfrom		sys_recvfrom | 
					
						
							|  |  |  | 293	common	shutdown		sys_shutdown | 
					
						
							|  |  |  | 294	common	setsockopt		sys_setsockopt | 
					
						
							|  |  |  | 295	common	getsockopt		sys_getsockopt | 
					
						
							|  |  |  | 296	common	sendmsg			sys_sendmsg		sys_oabi_sendmsg | 
					
						
							|  |  |  | 297	common	recvmsg			sys_recvmsg | 
					
						
							|  |  |  | 298	common	semop			sys_semop		sys_oabi_semop | 
					
						
							|  |  |  | 299	common	semget			sys_semget | 
					
						
							| 
									
										
											  
											
												ipc: rename old-style shmctl/semctl/msgctl syscalls
The behavior of these system calls is slightly different between
architectures, as determined by the CONFIG_ARCH_WANT_IPC_PARSE_VERSION
symbol. Most architectures that implement the split IPC syscalls don't set
that symbol and only get the modern version, but alpha, arm, microblaze,
mips-n32, mips-n64 and xtensa expect the caller to pass the IPC_64 flag.
For the architectures that so far only implement sys_ipc(), i.e. m68k,
mips-o32, powerpc, s390, sh, sparc, and x86-32, we want the new behavior
when adding the split syscalls, so we need to distinguish between the
two groups of architectures.
The method I picked for this distinction is to have a separate system call
entry point: sys_old_*ctl() now uses ipc_parse_version, while sys_*ctl()
does not. The system call tables of the five architectures are changed
accordingly.
As an additional benefit, we no longer need the configuration specific
definition for ipc_parse_version(), it always does the same thing now,
but simply won't get called on architectures with the modern interface.
A small downside is that on architectures that do set
ARCH_WANT_IPC_PARSE_VERSION, we now have an extra set of entry points
that are never called. They only add a few bytes of bloat, so it seems
better to keep them compared to adding yet another Kconfig symbol.
I considered adding new syscall numbers for the IPC_64 variants for
consistency, but decided against that for now.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
											
										 
											2018-12-31 22:22:40 +01:00
										 |  |  | 300	common	semctl			sys_old_semctl | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 301	common	msgsnd			sys_msgsnd | 
					
						
							|  |  |  | 302	common	msgrcv			sys_msgrcv | 
					
						
							|  |  |  | 303	common	msgget			sys_msgget | 
					
						
							| 
									
										
											  
											
												ipc: rename old-style shmctl/semctl/msgctl syscalls
The behavior of these system calls is slightly different between
architectures, as determined by the CONFIG_ARCH_WANT_IPC_PARSE_VERSION
symbol. Most architectures that implement the split IPC syscalls don't set
that symbol and only get the modern version, but alpha, arm, microblaze,
mips-n32, mips-n64 and xtensa expect the caller to pass the IPC_64 flag.
For the architectures that so far only implement sys_ipc(), i.e. m68k,
mips-o32, powerpc, s390, sh, sparc, and x86-32, we want the new behavior
when adding the split syscalls, so we need to distinguish between the
two groups of architectures.
The method I picked for this distinction is to have a separate system call
entry point: sys_old_*ctl() now uses ipc_parse_version, while sys_*ctl()
does not. The system call tables of the five architectures are changed
accordingly.
As an additional benefit, we no longer need the configuration specific
definition for ipc_parse_version(), it always does the same thing now,
but simply won't get called on architectures with the modern interface.
A small downside is that on architectures that do set
ARCH_WANT_IPC_PARSE_VERSION, we now have an extra set of entry points
that are never called. They only add a few bytes of bloat, so it seems
better to keep them compared to adding yet another Kconfig symbol.
I considered adding new syscall numbers for the IPC_64 variants for
consistency, but decided against that for now.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
											
										 
											2018-12-31 22:22:40 +01:00
										 |  |  | 304	common	msgctl			sys_old_msgctl | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 305	common	shmat			sys_shmat | 
					
						
							|  |  |  | 306	common	shmdt			sys_shmdt | 
					
						
							|  |  |  | 307	common	shmget			sys_shmget | 
					
						
							| 
									
										
											  
											
												ipc: rename old-style shmctl/semctl/msgctl syscalls
The behavior of these system calls is slightly different between
architectures, as determined by the CONFIG_ARCH_WANT_IPC_PARSE_VERSION
symbol. Most architectures that implement the split IPC syscalls don't set
that symbol and only get the modern version, but alpha, arm, microblaze,
mips-n32, mips-n64 and xtensa expect the caller to pass the IPC_64 flag.
For the architectures that so far only implement sys_ipc(), i.e. m68k,
mips-o32, powerpc, s390, sh, sparc, and x86-32, we want the new behavior
when adding the split syscalls, so we need to distinguish between the
two groups of architectures.
The method I picked for this distinction is to have a separate system call
entry point: sys_old_*ctl() now uses ipc_parse_version, while sys_*ctl()
does not. The system call tables of the five architectures are changed
accordingly.
As an additional benefit, we no longer need the configuration specific
definition for ipc_parse_version(), it always does the same thing now,
but simply won't get called on architectures with the modern interface.
A small downside is that on architectures that do set
ARCH_WANT_IPC_PARSE_VERSION, we now have an extra set of entry points
that are never called. They only add a few bytes of bloat, so it seems
better to keep them compared to adding yet another Kconfig symbol.
I considered adding new syscall numbers for the IPC_64 variants for
consistency, but decided against that for now.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
											
										 
											2018-12-31 22:22:40 +01:00
										 |  |  | 308	common	shmctl			sys_old_shmctl | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 309	common	add_key			sys_add_key | 
					
						
							|  |  |  | 310	common	request_key		sys_request_key | 
					
						
							|  |  |  | 311	common	keyctl			sys_keyctl | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 312	common	semtimedop		sys_semtimedop_time32	sys_oabi_semtimedop | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 313	common	vserver | 
					
						
							|  |  |  | 314	common	ioprio_set		sys_ioprio_set | 
					
						
							|  |  |  | 315	common	ioprio_get		sys_ioprio_get | 
					
						
							|  |  |  | 316	common	inotify_init		sys_inotify_init | 
					
						
							|  |  |  | 317	common	inotify_add_watch	sys_inotify_add_watch | 
					
						
							|  |  |  | 318	common	inotify_rm_watch	sys_inotify_rm_watch | 
					
						
							|  |  |  | 319	common	mbind			sys_mbind | 
					
						
							|  |  |  | 320	common	get_mempolicy		sys_get_mempolicy | 
					
						
							|  |  |  | 321	common	set_mempolicy		sys_set_mempolicy | 
					
						
							|  |  |  | 322	common	openat			sys_openat | 
					
						
							|  |  |  | 323	common	mkdirat			sys_mkdirat | 
					
						
							|  |  |  | 324	common	mknodat			sys_mknodat | 
					
						
							|  |  |  | 325	common	fchownat		sys_fchownat | 
					
						
							| 
									
										
											  
											
												y2038: rename old time and utime syscalls
The time, stime, utime, utimes, and futimesat system calls are only
used on older architectures, and we do not provide y2038 safe variants
of them, as they are replaced by clock_gettime64, clock_settime64,
and utimensat_time64.
However, for consistency it seems better to have the 32-bit architectures
that still use them call the "time32" entry points (leaving the
traditional handlers for the 64-bit architectures), like we do for system
calls that now require two versions.
Note: We used to always define __ARCH_WANT_SYS_TIME and
__ARCH_WANT_SYS_UTIME and only set __ARCH_WANT_COMPAT_SYS_TIME and
__ARCH_WANT_SYS_UTIME32 for compat mode on 64-bit kernels. Now this is
reversed: only 64-bit architectures set __ARCH_WANT_SYS_TIME/UTIME, while
we need __ARCH_WANT_SYS_TIME32/UTIME32 for 32-bit architectures and compat
mode. The resulting asm/unistd.h changes look a bit counterintuitive.
This is only a cleanup patch and it should not change any behavior.
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>
											
										 
											2019-01-06 23:45:29 +01:00
										 |  |  | 326	common	futimesat		sys_futimesat_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 327	common	fstatat64		sys_fstatat64		sys_oabi_fstatat64 | 
					
						
							|  |  |  | 328	common	unlinkat		sys_unlinkat | 
					
						
							|  |  |  | 329	common	renameat		sys_renameat | 
					
						
							|  |  |  | 330	common	linkat			sys_linkat | 
					
						
							|  |  |  | 331	common	symlinkat		sys_symlinkat | 
					
						
							|  |  |  | 332	common	readlinkat		sys_readlinkat | 
					
						
							|  |  |  | 333	common	fchmodat		sys_fchmodat | 
					
						
							|  |  |  | 334	common	faccessat		sys_faccessat | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 335	common	pselect6		sys_pselect6_time32 | 
					
						
							|  |  |  | 336	common	ppoll			sys_ppoll_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 337	common	unshare			sys_unshare | 
					
						
							|  |  |  | 338	common	set_robust_list		sys_set_robust_list | 
					
						
							|  |  |  | 339	common	get_robust_list		sys_get_robust_list | 
					
						
							|  |  |  | 340	common	splice			sys_splice | 
					
						
							|  |  |  | 341	common	arm_sync_file_range	sys_sync_file_range2 | 
					
						
							|  |  |  | 342	common	tee			sys_tee | 
					
						
							|  |  |  | 343	common	vmsplice		sys_vmsplice | 
					
						
							|  |  |  | 344	common	move_pages		sys_move_pages | 
					
						
							|  |  |  | 345	common	getcpu			sys_getcpu | 
					
						
							|  |  |  | 346	common	epoll_pwait		sys_epoll_pwait | 
					
						
							|  |  |  | 347	common	kexec_load		sys_kexec_load | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 348	common	utimensat		sys_utimensat_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 349	common	signalfd		sys_signalfd | 
					
						
							|  |  |  | 350	common	timerfd_create		sys_timerfd_create | 
					
						
							|  |  |  | 351	common	eventfd			sys_eventfd | 
					
						
							|  |  |  | 352	common	fallocate		sys_fallocate | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 353	common	timerfd_settime		sys_timerfd_settime32 | 
					
						
							|  |  |  | 354	common	timerfd_gettime		sys_timerfd_gettime32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 355	common	signalfd4		sys_signalfd4 | 
					
						
							|  |  |  | 356	common	eventfd2		sys_eventfd2 | 
					
						
							|  |  |  | 357	common	epoll_create1		sys_epoll_create1 | 
					
						
							|  |  |  | 358	common	dup3			sys_dup3 | 
					
						
							|  |  |  | 359	common	pipe2			sys_pipe2 | 
					
						
							|  |  |  | 360	common	inotify_init1		sys_inotify_init1 | 
					
						
							|  |  |  | 361	common	preadv			sys_preadv | 
					
						
							|  |  |  | 362	common	pwritev			sys_pwritev | 
					
						
							|  |  |  | 363	common	rt_tgsigqueueinfo	sys_rt_tgsigqueueinfo | 
					
						
							|  |  |  | 364	common	perf_event_open		sys_perf_event_open | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 365	common	recvmmsg		sys_recvmmsg_time32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 366	common	accept4			sys_accept4 | 
					
						
							|  |  |  | 367	common	fanotify_init		sys_fanotify_init | 
					
						
							|  |  |  | 368	common	fanotify_mark		sys_fanotify_mark | 
					
						
							|  |  |  | 369	common	prlimit64		sys_prlimit64 | 
					
						
							|  |  |  | 370	common	name_to_handle_at	sys_name_to_handle_at | 
					
						
							|  |  |  | 371	common	open_by_handle_at	sys_open_by_handle_at | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 372	common	clock_adjtime		sys_clock_adjtime32 | 
					
						
							| 
									
										
										
										
											2016-10-18 19:57:01 +01:00
										 |  |  | 373	common	syncfs			sys_syncfs | 
					
						
							|  |  |  | 374	common	sendmmsg		sys_sendmmsg | 
					
						
							|  |  |  | 375	common	setns			sys_setns | 
					
						
							|  |  |  | 376	common	process_vm_readv	sys_process_vm_readv | 
					
						
							|  |  |  | 377	common	process_vm_writev	sys_process_vm_writev | 
					
						
							|  |  |  | 378	common	kcmp			sys_kcmp | 
					
						
							|  |  |  | 379	common	finit_module		sys_finit_module | 
					
						
							|  |  |  | 380	common	sched_setattr		sys_sched_setattr | 
					
						
							|  |  |  | 381	common	sched_getattr		sys_sched_getattr | 
					
						
							|  |  |  | 382	common	renameat2		sys_renameat2 | 
					
						
							|  |  |  | 383	common	seccomp			sys_seccomp | 
					
						
							|  |  |  | 384	common	getrandom		sys_getrandom | 
					
						
							|  |  |  | 385	common	memfd_create		sys_memfd_create | 
					
						
							|  |  |  | 386	common	bpf			sys_bpf | 
					
						
							|  |  |  | 387	common	execveat		sys_execveat | 
					
						
							|  |  |  | 388	common	userfaultfd		sys_userfaultfd | 
					
						
							|  |  |  | 389	common	membarrier		sys_membarrier | 
					
						
							|  |  |  | 390	common	mlock2			sys_mlock2 | 
					
						
							|  |  |  | 391	common	copy_file_range		sys_copy_file_range | 
					
						
							|  |  |  | 392	common	preadv2			sys_preadv2 | 
					
						
							|  |  |  | 393	common	pwritev2		sys_pwritev2 | 
					
						
							| 
									
										
										
										
											2016-10-18 20:26:10 +01:00
										 |  |  | 394	common	pkey_mprotect		sys_pkey_mprotect | 
					
						
							|  |  |  | 395	common	pkey_alloc		sys_pkey_alloc | 
					
						
							|  |  |  | 396	common	pkey_free		sys_pkey_free | 
					
						
							| 
									
										
										
										
											2017-03-09 17:14:32 +00:00
										 |  |  | 397	common	statx			sys_statx | 
					
						
							| 
									
										
										
										
											2018-06-02 08:43:57 -04:00
										 |  |  | 398	common	rseq			sys_rseq | 
					
						
							| 
									
										
										
										
											2019-01-01 01:13:32 +01:00
										 |  |  | 399	common	io_pgetevents		sys_io_pgetevents_time32 | 
					
						
							| 
									
										
										
										
											2018-12-30 21:43:07 +01:00
										 |  |  | 400	common	migrate_pages		sys_migrate_pages | 
					
						
							| 
									
										
										
										
											2018-12-30 22:01:52 +01:00
										 |  |  | 401	common	kexec_file_load		sys_kexec_file_load | 
					
						
							| 
									
										
										
										
											2019-01-10 12:45:11 +01:00
										 |  |  | # 402 is unused | 
					
						
							|  |  |  | 403	common	clock_gettime64			sys_clock_gettime | 
					
						
							|  |  |  | 404	common	clock_settime64			sys_clock_settime | 
					
						
							|  |  |  | 405	common	clock_adjtime64			sys_clock_adjtime | 
					
						
							|  |  |  | 406	common	clock_getres_time64		sys_clock_getres | 
					
						
							|  |  |  | 407	common	clock_nanosleep_time64		sys_clock_nanosleep | 
					
						
							|  |  |  | 408	common	timer_gettime64			sys_timer_gettime | 
					
						
							|  |  |  | 409	common	timer_settime64			sys_timer_settime | 
					
						
							|  |  |  | 410	common	timerfd_gettime64		sys_timerfd_gettime | 
					
						
							|  |  |  | 411	common	timerfd_settime64		sys_timerfd_settime | 
					
						
							|  |  |  | 412	common	utimensat_time64		sys_utimensat | 
					
						
							|  |  |  | 413	common	pselect6_time64			sys_pselect6 | 
					
						
							|  |  |  | 414	common	ppoll_time64			sys_ppoll | 
					
						
							|  |  |  | 416	common	io_pgetevents_time64		sys_io_pgetevents | 
					
						
							|  |  |  | 417	common	recvmmsg_time64			sys_recvmmsg | 
					
						
							|  |  |  | 418	common	mq_timedsend_time64		sys_mq_timedsend | 
					
						
							|  |  |  | 419	common	mq_timedreceive_time64		sys_mq_timedreceive | 
					
						
							|  |  |  | 420	common	semtimedop_time64		sys_semtimedop | 
					
						
							|  |  |  | 421	common	rt_sigtimedwait_time64		sys_rt_sigtimedwait | 
					
						
							|  |  |  | 422	common	futex_time64			sys_futex | 
					
						
							|  |  |  | 423	common	sched_rr_get_interval_time64	sys_sched_rr_get_interval | 
					
						
							| 
									
										
										
										
											2019-02-28 13:59:19 +01:00
										 |  |  | 424	common	pidfd_send_signal		sys_pidfd_send_signal | 
					
						
							|  |  |  | 425	common	io_uring_setup			sys_io_uring_setup | 
					
						
							|  |  |  | 426	common	io_uring_enter			sys_io_uring_enter | 
					
						
							|  |  |  | 427	common	io_uring_register		sys_io_uring_register | 
					
						
							| 
									
										
										
										
											2019-05-16 12:52:34 +01:00
										 |  |  | 428	common	open_tree			sys_open_tree | 
					
						
							|  |  |  | 429	common	move_mount			sys_move_mount | 
					
						
							|  |  |  | 430	common	fsopen				sys_fsopen | 
					
						
							|  |  |  | 431	common	fsconfig			sys_fsconfig | 
					
						
							|  |  |  | 432	common	fsmount				sys_fsmount | 
					
						
							|  |  |  | 433	common	fspick				sys_fspick | 
					
						
							| 
									
										
										
										
											2019-05-24 12:44:59 +02:00
										 |  |  | 434	common	pidfd_open			sys_pidfd_open | 
					
						
							| 
									
										
										
										
											2019-07-11 10:09:44 -07:00
										 |  |  | 435	common	clone3				sys_clone3 | 
					
						
							| 
									
										
										
										
											2019-05-24 11:31:44 +02:00
										 |  |  | 436	common	close_range			sys_close_range | 
					
						
							| 
									
										
											  
											
												open: introduce openat2(2) syscall
/* Background. */
For a very long time, extending openat(2) with new features has been
incredibly frustrating. This stems from the fact that openat(2) is
possibly the most famous counter-example to the mantra "don't silently
accept garbage from userspace" -- it doesn't check whether unknown flags
are present[1].
This means that (generally) the addition of new flags to openat(2) has
been fraught with backwards-compatibility issues (O_TMPFILE has to be
defined as __O_TMPFILE|O_DIRECTORY|[O_RDWR or O_WRONLY] to ensure old
kernels gave errors, since it's insecure to silently ignore the
flag[2]). All new security-related flags therefore have a tough road to
being added to openat(2).
Userspace also has a hard time figuring out whether a particular flag is
supported on a particular kernel. While it is now possible with
contemporary kernels (thanks to [3]), older kernels will expose unknown
flag bits through fcntl(F_GETFL). Giving a clear -EINVAL during
openat(2) time matches modern syscall designs and is far more
fool-proof.
In addition, the newly-added path resolution restriction LOOKUP flags
(which we would like to expose to user-space) don't feel related to the
pre-existing O_* flag set -- they affect all components of path lookup.
We'd therefore like to add a new flag argument.
Adding a new syscall allows us to finally fix the flag-ignoring problem,
and we can make it extensible enough so that we will hopefully never
need an openat3(2).
/* Syscall Prototype. */
  /*
   * open_how is an extensible structure (similar in interface to
   * clone3(2) or sched_setattr(2)). The size parameter must be set to
   * sizeof(struct open_how), to allow for future extensions. All future
   * extensions will be appended to open_how, with their zero value
   * acting as a no-op default.
   */
  struct open_how { /* ... */ };
  int openat2(int dfd, const char *pathname,
              struct open_how *how, size_t size);
/* Description. */
The initial version of 'struct open_how' contains the following fields:
  flags
    Used to specify openat(2)-style flags. However, any unknown flag
    bits or otherwise incorrect flag combinations (like O_PATH|O_RDWR)
    will result in -EINVAL. In addition, this field is 64-bits wide to
    allow for more O_ flags than currently permitted with openat(2).
  mode
    The file mode for O_CREAT or O_TMPFILE.
    Must be set to zero if flags does not contain O_CREAT or O_TMPFILE.
  resolve
    Restrict path resolution (in contrast to O_* flags they affect all
    path components). The current set of flags are as follows (at the
    moment, all of the RESOLVE_ flags are implemented as just passing
    the corresponding LOOKUP_ flag).
    RESOLVE_NO_XDEV       => LOOKUP_NO_XDEV
    RESOLVE_NO_SYMLINKS   => LOOKUP_NO_SYMLINKS
    RESOLVE_NO_MAGICLINKS => LOOKUP_NO_MAGICLINKS
    RESOLVE_BENEATH       => LOOKUP_BENEATH
    RESOLVE_IN_ROOT       => LOOKUP_IN_ROOT
open_how does not contain an embedded size field, because it is of
little benefit (userspace can figure out the kernel open_how size at
runtime fairly easily without it). It also only contains u64s (even
though ->mode arguably should be a u16) to avoid having padding fields
which are never used in the future.
Note that as a result of the new how->flags handling, O_PATH|O_TMPFILE
is no longer permitted for openat(2). As far as I can tell, this has
always been a bug and appears to not be used by userspace (and I've not
seen any problems on my machines by disallowing it). If it turns out
this breaks something, we can special-case it and only permit it for
openat(2) but not openat2(2).
After input from Florian Weimer, the new open_how and flag definitions
are inside a separate header from uapi/linux/fcntl.h, to avoid problems
that glibc has with importing that header.
/* Testing. */
In a follow-up patch there are over 200 selftests which ensure that this
syscall has the correct semantics and will correctly handle several
attack scenarios.
In addition, I've written a userspace library[4] which provides
convenient wrappers around openat2(RESOLVE_IN_ROOT) (this is necessary
because no other syscalls support RESOLVE_IN_ROOT, and thus lots of care
must be taken when using RESOLVE_IN_ROOT'd file descriptors with other
syscalls). During the development of this patch, I've run numerous
verification tests using libpathrs (showing that the API is reasonably
usable by userspace).
/* Future Work. */
Additional RESOLVE_ flags have been suggested during the review period.
These can be easily implemented separately (such as blocking auto-mount
during resolution).
Furthermore, there are some other proposed changes to the openat(2)
interface (the most obvious example is magic-link hardening[5]) which
would be a good opportunity to add a way for userspace to restrict how
O_PATH file descriptors can be re-opened.
Another possible avenue of future work would be some kind of
CHECK_FIELDS[6] flag which causes the kernel to indicate to userspace
which openat2(2) flags and fields are supported by the current kernel
(to avoid userspace having to go through several guesses to figure it
out).
[1]: https://lwn.net/Articles/588444/
[2]: https://lore.kernel.org/lkml/CA+55aFyyxJL1LyXZeBsf2ypriraj5ut1XkNDsunRBqgVjZU_6Q@mail.gmail.com
[3]: commit 629e014bb834 ("fs: completely ignore unknown open flags")
[4]: https://sourceware.org/bugzilla/show_bug.cgi?id=17523
[5]: https://lore.kernel.org/lkml/20190930183316.10190-2-cyphar@cyphar.com/
[6]: https://youtu.be/ggD-eb3yPVs
Suggested-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
											
										 
											2020-01-18 23:07:59 +11:00
										 |  |  | 437	common	openat2				sys_openat2 | 
					
						
							| 
									
										
										
										
											2020-01-07 09:59:26 -08:00
										 |  |  | 438	common	pidfd_getfd			sys_pidfd_getfd | 
					
						
							| 
									
										
										
										
											2020-05-14 16:44:25 +02:00
										 |  |  | 439	common	faccessat2			sys_faccessat2 | 
					
						
							| 
									
										
											  
											
												mm/madvise: introduce process_madvise() syscall: an external memory hinting API
There is usecase that System Management Software(SMS) want to give a
memory hint like MADV_[COLD|PAGEEOUT] to other processes and in the
case of Android, it is the ActivityManagerService.
The information required to make the reclaim decision is not known to the
app.  Instead, it is known to the centralized userspace
daemon(ActivityManagerService), and that daemon must be able to initiate
reclaim on its own without any app involvement.
To solve the issue, this patch introduces a new syscall
process_madvise(2).  It uses pidfd of an external process to give the
hint.  It also supports vector address range because Android app has
thousands of vmas due to zygote so it's totally waste of CPU and power if
we should call the syscall one by one for each vma.(With testing 2000-vma
syscall vs 1-vector syscall, it showed 15% performance improvement.  I
think it would be bigger in real practice because the testing ran very
cache friendly environment).
Another potential use case for the vector range is to amortize the cost
ofTLB shootdowns for multiple ranges when using MADV_DONTNEED; this could
benefit users like TCP receive zerocopy and malloc implementations.  In
future, we could find more usecases for other advises so let's make it
happens as API since we introduce a new syscall at this moment.  With
that, existing madvise(2) user could replace it with process_madvise(2)
with their own pid if they want to have batch address ranges support
feature.
ince it could affect other process's address range, only privileged
process(PTRACE_MODE_ATTACH_FSCREDS) or something else(e.g., being the same
UID) gives it the right to ptrace the process could use it successfully.
The flag argument is reserved for future use if we need to extend the API.
I think supporting all hints madvise has/will supported/support to
process_madvise is rather risky.  Because we are not sure all hints make
sense from external process and implementation for the hint may rely on
the caller being in the current context so it could be error-prone.  Thus,
I just limited hints as MADV_[COLD|PAGEOUT] in this patch.
If someone want to add other hints, we could hear the usecase and review
it for each hint.  It's safer for maintenance rather than introducing a
buggy syscall but hard to fix it later.
So finally, the API is as follows,
      ssize_t process_madvise(int pidfd, const struct iovec *iovec,
                unsigned long vlen, int advice, unsigned int flags);
    DESCRIPTION
      The process_madvise() system call is used to give advice or directions
      to the kernel about the address ranges from external process as well as
      local process. It provides the advice to address ranges of process
      described by iovec and vlen. The goal of such advice is to improve
      system or application performance.
      The pidfd selects the process referred to by the PID file descriptor
      specified in pidfd. (See pidofd_open(2) for further information)
      The pointer iovec points to an array of iovec structures, defined in
      <sys/uio.h> as:
        struct iovec {
            void *iov_base;         /* starting address */
            size_t iov_len;         /* number of bytes to be advised */
        };
      The iovec describes address ranges beginning at address(iov_base)
      and with size length of bytes(iov_len).
      The vlen represents the number of elements in iovec.
      The advice is indicated in the advice argument, which is one of the
      following at this moment if the target process specified by pidfd is
      external.
        MADV_COLD
        MADV_PAGEOUT
      Permission to provide a hint to external process is governed by a
      ptrace access mode PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
      The process_madvise supports every advice madvise(2) has if target
      process is in same thread group with calling process so user could
      use process_madvise(2) to extend existing madvise(2) to support
      vector address ranges.
    RETURN VALUE
      On success, process_madvise() returns the number of bytes advised.
      This return value may be less than the total number of requested
      bytes, if an error occurred. The caller should check return value
      to determine whether a partial advice occurred.
FAQ:
Q.1 - Why does any external entity have better knowledge?
Quote from Sandeep
"For Android, every application (including the special SystemServer)
are forked from Zygote.  The reason of course is to share as many
libraries and classes between the two as possible to benefit from the
preloading during boot.
After applications start, (almost) all of the APIs end up calling into
this SystemServer process over IPC (binder) and back to the
application.
In a fully running system, the SystemServer monitors every single
process periodically to calculate their PSS / RSS and also decides
which process is "important" to the user for interactivity.
So, because of how these processes start _and_ the fact that the
SystemServer is looping to monitor each process, it does tend to *know*
which address range of the application is not used / useful.
Besides, we can never rely on applications to clean things up
themselves.  We've had the "hey app1, the system is low on memory,
please trim your memory usage down" notifications for a long time[1].
They rely on applications honoring the broadcasts and very few do.
So, if we want to avoid the inevitable killing of the application and
restarting it, some way to be able to tell the OS about unimportant
memory in these applications will be useful.
- ssp
Q.2 - How to guarantee the race(i.e., object validation) between when
giving a hint from an external process and get the hint from the target
process?
process_madvise operates on the target process's address space as it
exists at the instant that process_madvise is called.  If the space
target process can run between the time the process_madvise process
inspects the target process address space and the time that
process_madvise is actually called, process_madvise may operate on
memory regions that the calling process does not expect.  It's the
responsibility of the process calling process_madvise to close this
race condition.  For example, the calling process can suspend the
target process with ptrace, SIGSTOP, or the freezer cgroup so that it
doesn't have an opportunity to change its own address space before
process_madvise is called.  Another option is to operate on memory
regions that the caller knows a priori will be unchanged in the target
process.  Yet another option is to accept the race for certain
process_madvise calls after reasoning that mistargeting will do no
harm.  The suggested API itself does not provide synchronization.  It
also apply other APIs like move_pages, process_vm_write.
The race isn't really a problem though.  Why is it so wrong to require
that callers do their own synchronization in some manner?  Nobody
objects to write(2) merely because it's possible for two processes to
open the same file and clobber each other's writes --- instead, we tell
people to use flock or something.  Think about mmap.  It never
guarantees newly allocated address space is still valid when the user
tries to access it because other threads could unmap the memory right
before.  That's where we need synchronization by using other API or
design from userside.  It shouldn't be part of API itself.  If someone
needs more fine-grained synchronization rather than process level,
there were two ideas suggested - cookie[2] and anon-fd[3].  Both are
applicable via using last reserved argument of the API but I don't
think it's necessary right now since we have already ways to prevent
the race so don't want to add additional complexity with more
fine-grained optimization model.
To make the API extend, it reserved an unsigned long as last argument
so we could support it in future if someone really needs it.
Q.3 - Why doesn't ptrace work?
Injecting an madvise in the target process using ptrace would not work
for us because such injected madvise would have to be executed by the
target process, which means that process would have to be runnable and
that creates the risk of the abovementioned race and hinting a wrong
VMA.  Furthermore, we want to act the hint in caller's context, not the
callee's, because the callee is usually limited in cpuset/cgroups or
even freezed state so they can't act by themselves quick enough, which
causes more thrashing/kill.  It doesn't work if the target process are
ptraced(e.g., strace, debugger, minidump) because a process can have at
most one ptracer.
[1] https://developer.android.com/topic/performance/memory"
[2] process_getinfo for getting the cookie which is updated whenever
    vma of process address layout are changed - Daniel Colascione -
    https://lore.kernel.org/lkml/20190520035254.57579-1-minchan@kernel.org/T/#m7694416fd179b2066a2c62b5b139b14e3894e224
[3] anonymous fd which is used for the object(i.e., address range)
    validation - Michal Hocko -
    https://lore.kernel.org/lkml/20200120112722.GY18451@dhcp22.suse.cz/
[minchan@kernel.org: fix process_madvise build break for arm64]
  Link: http://lkml.kernel.org/r/20200303145756.GA219683@google.com
[minchan@kernel.org: fix build error for mips of process_madvise]
  Link: http://lkml.kernel.org/r/20200508052517.GA197378@google.com
[akpm@linux-foundation.org: fix patch ordering issue]
[akpm@linux-foundation.org: fix arm64 whoops]
[minchan@kernel.org: make process_madvise() vlen arg have type size_t, per Florian]
[akpm@linux-foundation.org: fix i386 build]
[sfr@canb.auug.org.au: fix syscall numbering]
  Link: https://lkml.kernel.org/r/20200905142639.49fc3f1a@canb.auug.org.au
[sfr@canb.auug.org.au: madvise.c needs compat.h]
  Link: https://lkml.kernel.org/r/20200908204547.285646b4@canb.auug.org.au
[minchan@kernel.org: fix mips build]
  Link: https://lkml.kernel.org/r/20200909173655.GC2435453@google.com
[yuehaibing@huawei.com: remove duplicate header which is included twice]
  Link: https://lkml.kernel.org/r/20200915121550.30584-1-yuehaibing@huawei.com
[minchan@kernel.org: do not use helper functions for process_madvise]
  Link: https://lkml.kernel.org/r/20200921175539.GB387368@google.com
[akpm@linux-foundation.org: pidfd_get_pid() gained an argument]
[sfr@canb.auug.org.au: fix up for "iov_iter: transparently handle compat iovecs in import_iovec"]
  Link: https://lkml.kernel.org/r/20200928212542.468e1fef@canb.auug.org.au
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Suren Baghdasaryan <surenb@google.com>
Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: David Rientjes <rientjes@google.com>
Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Cc: Brian Geffon <bgeffon@google.com>
Cc: Christian Brauner <christian@brauner.io>
Cc: Daniel Colascione <dancol@google.com>
Cc: Jann Horn <jannh@google.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Joel Fernandes <joel@joelfernandes.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: John Dias <joaodias@google.com>
Cc: Kirill Tkhai <ktkhai@virtuozzo.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Oleksandr Natalenko <oleksandr@redhat.com>
Cc: Sandeep Patil <sspatil@google.com>
Cc: SeongJae Park <sj38.park@gmail.com>
Cc: SeongJae Park <sjpark@amazon.de>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Sonny Rao <sonnyrao@google.com>
Cc: Tim Murray <timmurray@google.com>
Cc: Christian Brauner <christian.brauner@ubuntu.com>
Cc: Florian Weimer <fw@deneb.enyo.de>
Cc: <linux-man@vger.kernel.org>
Link: http://lkml.kernel.org/r/20200302193630.68771-3-minchan@kernel.org
Link: http://lkml.kernel.org/r/20200508183320.GA125527@google.com
Link: http://lkml.kernel.org/r/20200622192900.22757-4-minchan@kernel.org
Link: https://lkml.kernel.org/r/20200901000633.1920247-4-minchan@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
											
										 
											2020-10-17 16:14:59 -07:00
										 |  |  | 440	common	process_madvise			sys_process_madvise | 
					
						
							| 
									
										
										
										
											2020-12-18 14:05:41 -08:00
										 |  |  | 441	common	epoll_pwait2			sys_epoll_pwait2 | 
					
						
							| 
									
										
											  
											
												fs: add mount_setattr()
This implements the missing mount_setattr() syscall. While the new mount
api allows to change the properties of a superblock there is currently
no way to change the properties of a mount or a mount tree using file
descriptors which the new mount api is based on. In addition the old
mount api has the restriction that mount options cannot be applied
recursively. This hasn't changed since changing mount options on a
per-mount basis was implemented in [1] and has been a frequent request
not just for convenience but also for security reasons. The legacy
mount syscall is unable to accommodate this behavior without introducing
a whole new set of flags because MS_REC | MS_REMOUNT | MS_BIND |
MS_RDONLY | MS_NOEXEC | [...] only apply the mount option to the topmost
mount. Changing MS_REC to apply to the whole mount tree would mean
introducing a significant uapi change and would likely cause significant
regressions.
The new mount_setattr() syscall allows to recursively clear and set
mount options in one shot. Multiple calls to change mount options
requesting the same changes are idempotent:
int mount_setattr(int dfd, const char *path, unsigned flags,
                  struct mount_attr *uattr, size_t usize);
Flags to modify path resolution behavior are specified in the @flags
argument. Currently, AT_EMPTY_PATH, AT_RECURSIVE, AT_SYMLINK_NOFOLLOW,
and AT_NO_AUTOMOUNT are supported. If useful, additional lookup flags to
restrict path resolution as introduced with openat2() might be supported
in the future.
The mount_setattr() syscall can be expected to grow over time and is
designed with extensibility in mind. It follows the extensible syscall
pattern we have used with other syscalls such as openat2(), clone3(),
sched_{set,get}attr(), and others.
The set of mount options is passed in the uapi struct mount_attr which
currently has the following layout:
struct mount_attr {
	__u64 attr_set;
	__u64 attr_clr;
	__u64 propagation;
	__u64 userns_fd;
};
The @attr_set and @attr_clr members are used to clear and set mount
options. This way a user can e.g. request that a set of flags is to be
raised such as turning mounts readonly by raising MOUNT_ATTR_RDONLY in
@attr_set while at the same time requesting that another set of flags is
to be lowered such as removing noexec from a mount tree by specifying
MOUNT_ATTR_NOEXEC in @attr_clr.
Note, since the MOUNT_ATTR_<atime> values are an enum starting from 0,
not a bitmap, users wanting to transition to a different atime setting
cannot simply specify the atime setting in @attr_set, but must also
specify MOUNT_ATTR__ATIME in the @attr_clr field. So we ensure that
MOUNT_ATTR__ATIME can't be partially set in @attr_clr and that @attr_set
can't have any atime bits set if MOUNT_ATTR__ATIME isn't set in
@attr_clr.
The @propagation field lets callers specify the propagation type of a
mount tree. Propagation is a single property that has four different
settings and as such is not really a flag argument but an enum.
Specifically, it would be unclear what setting and clearing propagation
settings in combination would amount to. The legacy mount() syscall thus
forbids the combination of multiple propagation settings too. The goal
is to keep the semantics of mount propagation somewhat simple as they
are overly complex as it is.
The @userns_fd field lets user specify a user namespace whose idmapping
becomes the idmapping of the mount. This is implemented and explained in
detail in the next patch.
[1]: commit 2e4b7fcd9260 ("[PATCH] r/o bind mounts: honor mount writer counts at remount")
Link: https://lore.kernel.org/r/20210121131959.646623-35-christian.brauner@ubuntu.com
Cc: David Howells <dhowells@redhat.com>
Cc: Aleksa Sarai <cyphar@cyphar.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: linux-fsdevel@vger.kernel.org
Cc: linux-api@vger.kernel.org
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
											
										 
											2021-01-21 14:19:53 +01:00
										 |  |  | 442	common	mount_setattr			sys_mount_setattr | 
					
						
							| 
									
										
										
										
											2021-05-31 18:42:58 +02:00
										 |  |  | 443	common	quotactl_fd			sys_quotactl_fd | 
					
						
							| 
									
										
										
										
											2021-04-22 17:41:19 +02:00
										 |  |  | 444	common	landlock_create_ruleset		sys_landlock_create_ruleset | 
					
						
							|  |  |  | 445	common	landlock_add_rule		sys_landlock_add_rule | 
					
						
							|  |  |  | 446	common	landlock_restrict_self		sys_landlock_restrict_self | 
					
						
							| 
									
										
										
										
											2021-09-02 15:00:33 -07:00
										 |  |  | # 447 reserved for memfd_secret | 
					
						
							|  |  |  | 448	common	process_mrelease		sys_process_mrelease | 
					
						
							| 
									
										
										
										
											2021-09-23 14:11:07 -03:00
										 |  |  | 449	common	futex_waitv			sys_futex_waitv | 
					
						
							| 
									
										
										
										
											2022-01-14 14:08:21 -08:00
										 |  |  | 450	common	set_mempolicy_home_node		sys_set_mempolicy_home_node | 
					
						
							| 
									
										
										
										
											2023-05-10 12:58:06 -07:00
										 |  |  | 451	common	cachestat			sys_cachestat | 
					
						
							| 
									
										
										
										
											2023-07-11 18:16:05 +02:00
										 |  |  | 452	common	fchmodat2			sys_fchmodat2 |