diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-14 22:58:40 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-14 22:58:40 -0500 |
| commit | bca268565fd18f0b36ab8fff6e1623d8dffae2b1 (patch) | |
| tree | 11abda03d7a7764cfa6a49a6ec2da1576b3058ee /include/linux | |
| parent | 74d96f018673759d04d032c137d132f6447bfb1e (diff) | |
| parent | 26689452f5ca201add63b1b1ff0dbcf82d6885e7 (diff) | |
Merge branch 'syscalls' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'syscalls' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: (44 commits)
[CVE-2009-0029] s390 specific system call wrappers
[CVE-2009-0029] System call wrappers part 33
[CVE-2009-0029] System call wrappers part 32
[CVE-2009-0029] System call wrappers part 31
[CVE-2009-0029] System call wrappers part 30
[CVE-2009-0029] System call wrappers part 29
[CVE-2009-0029] System call wrappers part 28
[CVE-2009-0029] System call wrappers part 27
[CVE-2009-0029] System call wrappers part 26
[CVE-2009-0029] System call wrappers part 25
[CVE-2009-0029] System call wrappers part 24
[CVE-2009-0029] System call wrappers part 23
[CVE-2009-0029] System call wrappers part 22
[CVE-2009-0029] System call wrappers part 21
[CVE-2009-0029] System call wrappers part 20
[CVE-2009-0029] System call wrappers part 19
[CVE-2009-0029] System call wrappers part 18
[CVE-2009-0029] System call wrappers part 17
[CVE-2009-0029] System call wrappers part 16
[CVE-2009-0029] System call wrappers part 15
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/compat.h | 13 | ||||
| -rw-r--r-- | include/linux/syscalls.h | 169 |
2 files changed, 130 insertions, 52 deletions
diff --git a/include/linux/compat.h b/include/linux/compat.h index e88f3ecf38b4..3fd2194ff573 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
| @@ -280,5 +280,18 @@ asmlinkage long compat_sys_timerfd_settime(int ufd, int flags, | |||
| 280 | asmlinkage long compat_sys_timerfd_gettime(int ufd, | 280 | asmlinkage long compat_sys_timerfd_gettime(int ufd, |
| 281 | struct compat_itimerspec __user *otmr); | 281 | struct compat_itimerspec __user *otmr); |
| 282 | 282 | ||
| 283 | asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page, | ||
| 284 | __u32 __user *pages, | ||
| 285 | const int __user *nodes, | ||
| 286 | int __user *status, | ||
| 287 | int flags); | ||
| 288 | asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename, | ||
| 289 | struct compat_timeval __user *t); | ||
| 290 | asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename, | ||
| 291 | struct compat_stat __user *statbuf, | ||
| 292 | int flag); | ||
| 293 | asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename, | ||
| 294 | int flags, int mode); | ||
| 295 | |||
| 283 | #endif /* CONFIG_COMPAT */ | 296 | #endif /* CONFIG_COMPAT */ |
| 284 | #endif /* _LINUX_COMPAT_H */ | 297 | #endif /* _LINUX_COMPAT_H */ |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 18d0a243a7b3..16875f89e6a7 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -54,6 +54,7 @@ struct compat_stat; | |||
| 54 | struct compat_timeval; | 54 | struct compat_timeval; |
| 55 | struct robust_list_head; | 55 | struct robust_list_head; |
| 56 | struct getcpu_cache; | 56 | struct getcpu_cache; |
| 57 | struct old_linux_dirent; | ||
| 57 | 58 | ||
| 58 | #include <linux/types.h> | 59 | #include <linux/types.h> |
| 59 | #include <linux/aio_abi.h> | 60 | #include <linux/aio_abi.h> |
| @@ -65,6 +66,74 @@ struct getcpu_cache; | |||
| 65 | #include <linux/quota.h> | 66 | #include <linux/quota.h> |
| 66 | #include <linux/key.h> | 67 | #include <linux/key.h> |
| 67 | 68 | ||
| 69 | #define __SC_DECL1(t1, a1) t1 a1 | ||
| 70 | #define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__) | ||
| 71 | #define __SC_DECL3(t3, a3, ...) t3 a3, __SC_DECL2(__VA_ARGS__) | ||
| 72 | #define __SC_DECL4(t4, a4, ...) t4 a4, __SC_DECL3(__VA_ARGS__) | ||
| 73 | #define __SC_DECL5(t5, a5, ...) t5 a5, __SC_DECL4(__VA_ARGS__) | ||
| 74 | #define __SC_DECL6(t6, a6, ...) t6 a6, __SC_DECL5(__VA_ARGS__) | ||
| 75 | |||
| 76 | #define __SC_LONG1(t1, a1) long a1 | ||
| 77 | #define __SC_LONG2(t2, a2, ...) long a2, __SC_LONG1(__VA_ARGS__) | ||
| 78 | #define __SC_LONG3(t3, a3, ...) long a3, __SC_LONG2(__VA_ARGS__) | ||
| 79 | #define __SC_LONG4(t4, a4, ...) long a4, __SC_LONG3(__VA_ARGS__) | ||
| 80 | #define __SC_LONG5(t5, a5, ...) long a5, __SC_LONG4(__VA_ARGS__) | ||
| 81 | #define __SC_LONG6(t6, a6, ...) long a6, __SC_LONG5(__VA_ARGS__) | ||
| 82 | |||
| 83 | #define __SC_CAST1(t1, a1) (t1) a1 | ||
| 84 | #define __SC_CAST2(t2, a2, ...) (t2) a2, __SC_CAST1(__VA_ARGS__) | ||
| 85 | #define __SC_CAST3(t3, a3, ...) (t3) a3, __SC_CAST2(__VA_ARGS__) | ||
| 86 | #define __SC_CAST4(t4, a4, ...) (t4) a4, __SC_CAST3(__VA_ARGS__) | ||
| 87 | #define __SC_CAST5(t5, a5, ...) (t5) a5, __SC_CAST4(__VA_ARGS__) | ||
| 88 | #define __SC_CAST6(t6, a6, ...) (t6) a6, __SC_CAST5(__VA_ARGS__) | ||
| 89 | |||
| 90 | #define __SC_TEST(type) BUILD_BUG_ON(sizeof(type) > sizeof(long)) | ||
| 91 | #define __SC_TEST1(t1, a1) __SC_TEST(t1) | ||
| 92 | #define __SC_TEST2(t2, a2, ...) __SC_TEST(t2); __SC_TEST1(__VA_ARGS__) | ||
| 93 | #define __SC_TEST3(t3, a3, ...) __SC_TEST(t3); __SC_TEST2(__VA_ARGS__) | ||
| 94 | #define __SC_TEST4(t4, a4, ...) __SC_TEST(t4); __SC_TEST3(__VA_ARGS__) | ||
| 95 | #define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__) | ||
| 96 | #define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__) | ||
| 97 | |||
| 98 | #define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void) | ||
| 99 | #define SYSCALL_DEFINE1(...) SYSCALL_DEFINEx(1, __VA_ARGS__) | ||
| 100 | #define SYSCALL_DEFINE2(...) SYSCALL_DEFINEx(2, __VA_ARGS__) | ||
| 101 | #define SYSCALL_DEFINE3(...) SYSCALL_DEFINEx(3, __VA_ARGS__) | ||
| 102 | #define SYSCALL_DEFINE4(...) SYSCALL_DEFINEx(4, __VA_ARGS__) | ||
| 103 | #define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__) | ||
| 104 | #define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__) | ||
| 105 | |||
| 106 | #ifdef CONFIG_PPC64 | ||
| 107 | #define SYSCALL_ALIAS(alias, name) \ | ||
| 108 | asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \ | ||
| 109 | "\t.globl ." #alias "\n\t.set ." #alias ", ." #name) | ||
| 110 | #else | ||
| 111 | #define SYSCALL_ALIAS(alias, name) \ | ||
| 112 | asm ("\t.globl " #alias "\n\t.set " #alias ", " #name) | ||
| 113 | #endif | ||
| 114 | |||
| 115 | #ifdef CONFIG_HAVE_SYSCALL_WRAPPERS | ||
| 116 | |||
| 117 | #define SYSCALL_DEFINE(name) static inline long SYSC_##name | ||
| 118 | #define SYSCALL_DEFINEx(x, name, ...) \ | ||
| 119 | asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)); \ | ||
| 120 | static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)); \ | ||
| 121 | asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__)) \ | ||
| 122 | { \ | ||
| 123 | __SC_TEST##x(__VA_ARGS__); \ | ||
| 124 | return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__)); \ | ||
| 125 | } \ | ||
| 126 | SYSCALL_ALIAS(sys_##name, SyS_##name); \ | ||
| 127 | static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)) | ||
| 128 | |||
| 129 | #else /* CONFIG_HAVE_SYSCALL_WRAPPERS */ | ||
| 130 | |||
| 131 | #define SYSCALL_DEFINE(name) asmlinkage long sys_##name | ||
| 132 | #define SYSCALL_DEFINEx(x, name, ...) \ | ||
| 133 | asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)) | ||
| 134 | |||
| 135 | #endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */ | ||
| 136 | |||
| 68 | asmlinkage long sys_time(time_t __user *tloc); | 137 | asmlinkage long sys_time(time_t __user *tloc); |
| 69 | asmlinkage long sys_stime(time_t __user *tptr); | 138 | asmlinkage long sys_stime(time_t __user *tptr); |
| 70 | asmlinkage long sys_gettimeofday(struct timeval __user *tv, | 139 | asmlinkage long sys_gettimeofday(struct timeval __user *tv, |
| @@ -77,7 +146,7 @@ asmlinkage long sys_times(struct tms __user *tbuf); | |||
| 77 | 146 | ||
| 78 | asmlinkage long sys_gettid(void); | 147 | asmlinkage long sys_gettid(void); |
| 79 | asmlinkage long sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp); | 148 | asmlinkage long sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp); |
| 80 | asmlinkage unsigned long sys_alarm(unsigned int seconds); | 149 | asmlinkage long sys_alarm(unsigned int seconds); |
| 81 | asmlinkage long sys_getpid(void); | 150 | asmlinkage long sys_getpid(void); |
| 82 | asmlinkage long sys_getppid(void); | 151 | asmlinkage long sys_getppid(void); |
| 83 | asmlinkage long sys_getuid(void); | 152 | asmlinkage long sys_getuid(void); |
| @@ -166,7 +235,7 @@ asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments, | |||
| 166 | unsigned long flags); | 235 | unsigned long flags); |
| 167 | 236 | ||
| 168 | asmlinkage long sys_exit(int error_code); | 237 | asmlinkage long sys_exit(int error_code); |
| 169 | asmlinkage void sys_exit_group(int error_code); | 238 | asmlinkage long sys_exit_group(int error_code); |
| 170 | asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr, | 239 | asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr, |
| 171 | int options, struct rusage __user *ru); | 240 | int options, struct rusage __user *ru); |
| 172 | asmlinkage long sys_waitid(int which, pid_t pid, | 241 | asmlinkage long sys_waitid(int which, pid_t pid, |
| @@ -196,7 +265,7 @@ asmlinkage long sys_tkill(int pid, int sig); | |||
| 196 | asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo); | 265 | asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo); |
| 197 | asmlinkage long sys_sgetmask(void); | 266 | asmlinkage long sys_sgetmask(void); |
| 198 | asmlinkage long sys_ssetmask(int newmask); | 267 | asmlinkage long sys_ssetmask(int newmask); |
| 199 | asmlinkage unsigned long sys_signal(int sig, __sighandler_t handler); | 268 | asmlinkage long sys_signal(int sig, __sighandler_t handler); |
| 200 | asmlinkage long sys_pause(void); | 269 | asmlinkage long sys_pause(void); |
| 201 | 270 | ||
| 202 | asmlinkage long sys_sync(void); | 271 | asmlinkage long sys_sync(void); |
| @@ -246,29 +315,29 @@ asmlinkage long sys_lsetxattr(const char __user *path, const char __user *name, | |||
| 246 | const void __user *value, size_t size, int flags); | 315 | const void __user *value, size_t size, int flags); |
| 247 | asmlinkage long sys_fsetxattr(int fd, const char __user *name, | 316 | asmlinkage long sys_fsetxattr(int fd, const char __user *name, |
| 248 | const void __user *value, size_t size, int flags); | 317 | const void __user *value, size_t size, int flags); |
| 249 | asmlinkage ssize_t sys_getxattr(const char __user *path, const char __user *name, | 318 | asmlinkage long sys_getxattr(const char __user *path, const char __user *name, |
| 250 | void __user *value, size_t size); | 319 | void __user *value, size_t size); |
| 251 | asmlinkage ssize_t sys_lgetxattr(const char __user *path, const char __user *name, | 320 | asmlinkage long sys_lgetxattr(const char __user *path, const char __user *name, |
| 252 | void __user *value, size_t size); | 321 | void __user *value, size_t size); |
| 253 | asmlinkage ssize_t sys_fgetxattr(int fd, const char __user *name, | 322 | asmlinkage long sys_fgetxattr(int fd, const char __user *name, |
| 254 | void __user *value, size_t size); | 323 | void __user *value, size_t size); |
| 255 | asmlinkage ssize_t sys_listxattr(const char __user *path, char __user *list, | 324 | asmlinkage long sys_listxattr(const char __user *path, char __user *list, |
| 256 | size_t size); | 325 | size_t size); |
| 257 | asmlinkage ssize_t sys_llistxattr(const char __user *path, char __user *list, | 326 | asmlinkage long sys_llistxattr(const char __user *path, char __user *list, |
| 258 | size_t size); | 327 | size_t size); |
| 259 | asmlinkage ssize_t sys_flistxattr(int fd, char __user *list, size_t size); | 328 | asmlinkage long sys_flistxattr(int fd, char __user *list, size_t size); |
| 260 | asmlinkage long sys_removexattr(const char __user *path, | 329 | asmlinkage long sys_removexattr(const char __user *path, |
| 261 | const char __user *name); | 330 | const char __user *name); |
| 262 | asmlinkage long sys_lremovexattr(const char __user *path, | 331 | asmlinkage long sys_lremovexattr(const char __user *path, |
| 263 | const char __user *name); | 332 | const char __user *name); |
| 264 | asmlinkage long sys_fremovexattr(int fd, const char __user *name); | 333 | asmlinkage long sys_fremovexattr(int fd, const char __user *name); |
| 265 | 334 | ||
| 266 | asmlinkage unsigned long sys_brk(unsigned long brk); | 335 | asmlinkage long sys_brk(unsigned long brk); |
| 267 | asmlinkage long sys_mprotect(unsigned long start, size_t len, | 336 | asmlinkage long sys_mprotect(unsigned long start, size_t len, |
| 268 | unsigned long prot); | 337 | unsigned long prot); |
| 269 | asmlinkage unsigned long sys_mremap(unsigned long addr, | 338 | asmlinkage long sys_mremap(unsigned long addr, |
| 270 | unsigned long old_len, unsigned long new_len, | 339 | unsigned long old_len, unsigned long new_len, |
| 271 | unsigned long flags, unsigned long new_addr); | 340 | unsigned long flags, unsigned long new_addr); |
| 272 | asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, | 341 | asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, |
| 273 | unsigned long prot, unsigned long pgoff, | 342< | |
