sys_ni.c 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. // SPDX-License-Identifier: GPL-2.0
  2. #include <linux/linkage.h>
  3. #include <linux/errno.h>
  4. #include <asm/unistd.h>
  5. /* we can't #include <linux/syscalls.h> here,
  6. but tell gcc to not warn with -Wmissing-prototypes */
  7. asmlinkage long sys_ni_syscall(void);
  8. /*
  9. * Non-implemented system calls get redirected here.
  10. */
  11. asmlinkage long sys_ni_syscall(void)
  12. {
  13. return -ENOSYS;
  14. }
  15. /*
  16. * This list is kept in the same order as include/uapi/asm-generic/unistd.h.
  17. * Architecture specific entries go below, followed by deprecated or obsolete
  18. * system calls.
  19. */
  20. cond_syscall(sys_io_setup);
  21. cond_syscall(compat_sys_io_setup);
  22. cond_syscall(sys_io_destroy);
  23. cond_syscall(sys_io_submit);
  24. cond_syscall(compat_sys_io_submit);
  25. cond_syscall(sys_io_cancel);
  26. cond_syscall(sys_io_getevents);
  27. cond_syscall(compat_sys_io_getevents);
  28. /* fs/xattr.c */
  29. /* fs/dcache.c */
  30. /* fs/cookies.c */
  31. cond_syscall(sys_lookup_dcookie);
  32. cond_syscall(compat_sys_lookup_dcookie);
  33. /* fs/eventfd.c */
  34. cond_syscall(sys_eventfd2);
  35. /* fs/eventfd.c */
  36. cond_syscall(sys_epoll_create1);
  37. cond_syscall(sys_epoll_ctl);
  38. cond_syscall(sys_epoll_pwait);
  39. cond_syscall(compat_sys_epoll_pwait);
  40. /* fs/fcntl.c */
  41. /* fs/inotify_user.c */
  42. cond_syscall(sys_inotify_init1);
  43. cond_syscall(sys_inotify_add_watch);
  44. cond_syscall(sys_inotify_rm_watch);
  45. /* fs/ioctl.c */
  46. /* fs/ioprio.c */
  47. cond_syscall(sys_ioprio_set);
  48. cond_syscall(sys_ioprio_get);
  49. /* fs/locks.c */
  50. cond_syscall(sys_flock);
  51. /* fs/namei.c */
  52. /* fs/namespace.c */
  53. /* fs/nfsctl.c */
  54. /* fs/open.c */
  55. /* fs/pipe.c */
  56. /* fs/quota.c */
  57. cond_syscall(sys_quotactl);
  58. /* fs/readdir.c */
  59. /* fs/read_write.c */
  60. /* fs/sendfile.c */
  61. /* fs/select.c */
  62. /* fs/signalfd.c */
  63. cond_syscall(sys_signalfd4);
  64. cond_syscall(compat_sys_signalfd4);
  65. /* fs/splice.c */
  66. /* fs/stat.c */
  67. /* fs/sync.c */
  68. /* fs/timerfd.c */
  69. cond_syscall(sys_timerfd_create);
  70. cond_syscall(sys_timerfd_settime);
  71. cond_syscall(compat_sys_timerfd_settime);
  72. cond_syscall(sys_timerfd_gettime);
  73. cond_syscall(compat_sys_timerfd_gettime);
  74. /* fs/utimes.c */
  75. /* kernel/acct.c */
  76. cond_syscall(sys_acct);
  77. /* kernel/capability.c */
  78. cond_syscall(sys_capget);
  79. cond_syscall(sys_capset);
  80. /* kernel/exec_domain.c */
  81. /* kernel/exit.c */
  82. /* kernel/fork.c */
  83. /* kernel/futex.c */
  84. cond_syscall(sys_futex);
  85. cond_syscall(compat_sys_futex);
  86. cond_syscall(sys_set_robust_list);
  87. cond_syscall(compat_sys_set_robust_list);
  88. cond_syscall(sys_get_robust_list);
  89. cond_syscall(compat_sys_get_robust_list);
  90. /* kernel/hrtimer.c */
  91. /* kernel/itimer.c */
  92. /* kernel/kexec.c */
  93. cond_syscall(sys_kexec_load);
  94. cond_syscall(compat_sys_kexec_load);
  95. /* kernel/module.c */
  96. cond_syscall(sys_init_module);
  97. cond_syscall(sys_delete_module);
  98. /* kernel/posix-timers.c */
  99. /* kernel/printk.c */
  100. cond_syscall(sys_syslog);
  101. /* kernel/ptrace.c */
  102. /* kernel/sched/core.c */
  103. /* kernel/signal.c */
  104. /* kernel/sys.c */
  105. cond_syscall(sys_setregid);
  106. cond_syscall(sys_setgid);
  107. cond_syscall(sys_setreuid);
  108. cond_syscall(sys_setuid);
  109. cond_syscall(sys_setresuid);
  110. cond_syscall(sys_getresuid);
  111. cond_syscall(sys_setresgid);
  112. cond_syscall(sys_getresgid);
  113. cond_syscall(sys_setfsuid);
  114. cond_syscall(sys_setfsgid);
  115. cond_syscall(sys_setgroups);
  116. cond_syscall(sys_getgroups);
  117. /* kernel/time.c */
  118. /* kernel/timer.c */
  119. /* ipc/mqueue.c */
  120. cond_syscall(sys_mq_open);
  121. cond_syscall(compat_sys_mq_open);
  122. cond_syscall(sys_mq_unlink);
  123. cond_syscall(sys_mq_timedsend);
  124. cond_syscall(compat_sys_mq_timedsend);
  125. cond_syscall(sys_mq_timedreceive);
  126. cond_syscall(compat_sys_mq_timedreceive);
  127. cond_syscall(sys_mq_notify);
  128. cond_syscall(compat_sys_mq_notify);
  129. cond_syscall(sys_mq_getsetattr);
  130. cond_syscall(compat_sys_mq_getsetattr);
  131. /* ipc/msg.c */
  132. cond_syscall(sys_msgget);
  133. cond_syscall(sys_msgctl);
  134. cond_syscall(compat_sys_msgctl);
  135. cond_syscall(sys_msgrcv);
  136. cond_syscall(compat_sys_msgrcv);
  137. cond_syscall(sys_msgsnd);
  138. cond_syscall(compat_sys_msgsnd);
  139. /* ipc/sem.c */
  140. cond_syscall(sys_semget);
  141. cond_syscall(sys_semctl);
  142. cond_syscall(compat_sys_semctl);
  143. cond_syscall(sys_semtimedop);
  144. cond_syscall(compat_sys_semtimedop);
  145. cond_syscall(sys_semop);
  146. /* ipc/shm.c */
  147. cond_syscall(sys_shmget);
  148. cond_syscall(sys_shmctl);
  149. cond_syscall(compat_sys_shmctl);
  150. cond_syscall(sys_shmat);
  151. cond_syscall(compat_sys_shmat);
  152. cond_syscall(sys_shmdt);
  153. /* net/socket.c */
  154. cond_syscall(sys_socket);
  155. cond_syscall(sys_socketpair);
  156. cond_syscall(sys_bind);
  157. cond_syscall(sys_listen);
  158. cond_syscall(sys_accept);
  159. cond_syscall(sys_connect);
  160. cond_syscall(sys_getsockname);
  161. cond_syscall(sys_getpeername);
  162. cond_syscall(sys_setsockopt);
  163. cond_syscall(compat_sys_setsockopt);
  164. cond_syscall(sys_getsockopt);
  165. cond_syscall(compat_sys_getsockopt);
  166. cond_syscall(sys_sendto);
  167. cond_syscall(sys_shutdown);
  168. cond_syscall(sys_recvfrom);
  169. cond_syscall(compat_sys_recvfrom);
  170. cond_syscall(sys_sendmsg);
  171. cond_syscall(compat_sys_sendmsg);
  172. cond_syscall(sys_recvmsg);
  173. cond_syscall(compat_sys_recvmsg);
  174. /* mm/filemap.c */
  175. /* mm/nommu.c, also with MMU */
  176. cond_syscall(sys_mremap);
  177. /* security/keys/keyctl.c */
  178. cond_syscall(sys_add_key);
  179. cond_syscall(sys_request_key);
  180. cond_syscall(sys_keyctl);
  181. cond_syscall(compat_sys_keyctl);
  182. /* arch/example/kernel/sys_example.c */
  183. /* mm/fadvise.c */
  184. cond_syscall(sys_fadvise64_64);
  185. /* mm/, CONFIG_MMU only */
  186. cond_syscall(sys_swapon);
  187. cond_syscall(sys_swapoff);
  188. cond_syscall(sys_mprotect);
  189. cond_syscall(sys_msync);
  190. cond_syscall(sys_mlock);
  191. cond_syscall(sys_munlock);
  192. cond_syscall(sys_mlockall);
  193. cond_syscall(sys_munlockall);
  194. cond_syscall(sys_mincore);
  195. cond_syscall(sys_madvise);
  196. cond_syscall(sys_remap_file_pages);
  197. cond_syscall(sys_mbind);
  198. cond_syscall(compat_sys_mbind);
  199. cond_syscall(sys_get_mempolicy);
  200. cond_syscall(compat_sys_get_mempolicy);
  201. cond_syscall(sys_set_mempolicy);
  202. cond_syscall(compat_sys_set_mempolicy);
  203. cond_syscall(sys_migrate_pages);
  204. cond_syscall(compat_sys_migrate_pages);
  205. cond_syscall(sys_move_pages);
  206. cond_syscall(compat_sys_move_pages);
  207. cond_syscall(sys_perf_event_open);
  208. cond_syscall(sys_accept4);
  209. cond_syscall(sys_recvmmsg);
  210. cond_syscall(compat_sys_recvmmsg);
  211. /*
  212. * Architecture specific syscalls: see further below
  213. */
  214. /* fanotify */
  215. cond_syscall(sys_fanotify_init);
  216. cond_syscall(sys_fanotify_mark);
  217. /* open by handle */
  218. cond_syscall(sys_name_to_handle_at);
  219. cond_syscall(sys_open_by_handle_at);
  220. cond_syscall(compat_sys_open_by_handle_at);
  221. cond_syscall(sys_sendmmsg);
  222. cond_syscall(compat_sys_sendmmsg);
  223. cond_syscall(sys_process_vm_readv);
  224. cond_syscall(compat_sys_process_vm_readv);
  225. cond_syscall(sys_process_vm_writev);
  226. cond_syscall(compat_sys_process_vm_writev);
  227. /* compare kernel pointers */
  228. cond_syscall(sys_kcmp);
  229. cond_syscall(sys_finit_module);
  230. /* operate on Secure Computing state */
  231. cond_syscall(sys_seccomp);
  232. cond_syscall(sys_memfd_create);
  233. /* access BPF programs and maps */
  234. cond_syscall(sys_bpf);
  235. /* execveat */
  236. cond_syscall(sys_execveat);
  237. cond_syscall(sys_userfaultfd);
  238. /* membarrier */
  239. cond_syscall(sys_membarrier);
  240. cond_syscall(sys_mlock2);
  241. cond_syscall(sys_copy_file_range);
  242. /* memory protection keys */
  243. cond_syscall(sys_pkey_mprotect);
  244. cond_syscall(sys_pkey_alloc);
  245. cond_syscall(sys_pkey_free);
  246. /*
  247. * Architecture specific weak syscall entries.
  248. */
  249. /* pciconfig: alpha, arm, arm64, ia64, sparc */
  250. cond_syscall(sys_pciconfig_read);
  251. cond_syscall(sys_pciconfig_write);
  252. cond_syscall(sys_pciconfig_iobase);
  253. /* sys_socketcall: arm, mips, x86, ... */
  254. cond_syscall(sys_socketcall);
  255. cond_syscall(compat_sys_socketcall);
  256. /* compat syscalls for arm64, x86, ... */
  257. cond_syscall(compat_sys_sysctl);
  258. cond_syscall(compat_sys_fanotify_mark);
  259. /* x86 */
  260. cond_syscall(sys_vm86old);
  261. cond_syscall(sys_modify_ldt);
  262. cond_syscall(compat_sys_quotactl32);
  263. cond_syscall(sys_vm86);
  264. cond_syscall(sys_kexec_file_load);
  265. /* s390 */
  266. cond_syscall(sys_s390_pci_mmio_read);
  267. cond_syscall(sys_s390_pci_mmio_write);
  268. cond_syscall(compat_sys_s390_ipc);
  269. /* powerpc */
  270. cond_syscall(ppc_rtas);
  271. cond_syscall(sys_spu_run);
  272. cond_syscall(sys_spu_create);
  273. cond_syscall(sys_subpage_prot);
  274. /*
  275. * Deprecated system calls which are still defined in
  276. * include/uapi/asm-generic/unistd.h and wanted by >= 1 arch
  277. */
  278. /* __ARCH_WANT_SYSCALL_NO_FLAGS */
  279. cond_syscall(sys_epoll_create);
  280. cond_syscall(sys_inotify_init);
  281. cond_syscall(sys_eventfd);
  282. cond_syscall(sys_signalfd);
  283. cond_syscall(compat_sys_signalfd);
  284. /* __ARCH_WANT_SYSCALL_OFF_T */
  285. cond_syscall(sys_fadvise64);
  286. /* __ARCH_WANT_SYSCALL_DEPRECATED */
  287. cond_syscall(sys_epoll_wait);
  288. cond_syscall(sys_recv);
  289. cond_syscall(compat_sys_recv);
  290. cond_syscall(sys_send);
  291. cond_syscall(sys_bdflush);
  292. cond_syscall(sys_uselib);
  293. /*
  294. * The syscalls below are not found in include/uapi/asm-generic/unistd.h
  295. */
  296. /* obsolete: SGETMASK_SYSCALL */
  297. cond_syscall(sys_sgetmask);
  298. cond_syscall(sys_ssetmask);
  299. /* obsolete: SYSFS_SYSCALL */
  300. cond_syscall(sys_sysfs);
  301. /* obsolete: __ARCH_WANT_SYS_IPC */
  302. cond_syscall(sys_ipc);
  303. cond_syscall(compat_sys_ipc);
  304. /* obsolete: UID16 */
  305. cond_syscall(sys_chown16);
  306. cond_syscall(sys_fchown16);
  307. cond_syscall(sys_getegid16);
  308. cond_syscall(sys_geteuid16);
  309. cond_syscall(sys_getgid16);
  310. cond_syscall(sys_getgroups16);
  311. cond_syscall(sys_getresgid16);
  312. cond_syscall(sys_getresuid16);
  313. cond_syscall(sys_getuid16);
  314. cond_syscall(sys_lchown16);
  315. cond_syscall(sys_setfsgid16);
  316. cond_syscall(sys_setfsuid16);
  317. cond_syscall(sys_setgid16);
  318. cond_syscall(sys_setgroups16);
  319. cond_syscall(sys_setregid16);
  320. cond_syscall(sys_setresgid16);
  321. cond_syscall(sys_setresuid16);
  322. cond_syscall(sys_setreuid16);
  323. cond_syscall(sys_setuid16);