]>
Commit | Line | Data |
---|---|---|
b07edab2 HC |
1 | #include <linux/syscalls.h> |
2 | #include <linux/compat.h> | |
86d295e1 | 3 | #include "entry.h" |
b07edab2 HC |
4 | |
5 | #define COMPAT_SYSCALL_WRAP1(name, ...) \ | |
6 | COMPAT_SYSCALL_WRAPx(1, _##name, __VA_ARGS__) | |
7 | #define COMPAT_SYSCALL_WRAP2(name, ...) \ | |
8 | COMPAT_SYSCALL_WRAPx(2, _##name, __VA_ARGS__) | |
9 | #define COMPAT_SYSCALL_WRAP3(name, ...) \ | |
10 | COMPAT_SYSCALL_WRAPx(3, _##name, __VA_ARGS__) | |
11 | #define COMPAT_SYSCALL_WRAP4(name, ...) \ | |
12 | COMPAT_SYSCALL_WRAPx(4, _##name, __VA_ARGS__) | |
13 | #define COMPAT_SYSCALL_WRAP5(name, ...) \ | |
14 | COMPAT_SYSCALL_WRAPx(5, _##name, __VA_ARGS__) | |
15 | #define COMPAT_SYSCALL_WRAP6(name, ...) \ | |
16 | COMPAT_SYSCALL_WRAPx(6, _##name, __VA_ARGS__) | |
17 | ||
18 | #define COMPAT_SYSCALL_WRAPx(x, name, ...) \ | |
19 | asmlinkage long compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ | |
20 | asmlinkage long compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ | |
21 | { \ | |
22 | return sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__)); \ | |
23 | } | |
24 | ||
25 | COMPAT_SYSCALL_WRAP1(exit, int, error_code); | |
26 | COMPAT_SYSCALL_WRAP1(close, unsigned int, fd); | |
27 | COMPAT_SYSCALL_WRAP2(creat, const char __user *, pathname, umode_t, mode); | |
28 | COMPAT_SYSCALL_WRAP2(link, const char __user *, oldname, const char __user *, newname); | |
29 | COMPAT_SYSCALL_WRAP1(unlink, const char __user *, pathname); | |
30 | COMPAT_SYSCALL_WRAP1(chdir, const char __user *, filename); | |
31 | COMPAT_SYSCALL_WRAP3(mknod, const char __user *, filename, umode_t, mode, unsigned, dev); | |
32 | COMPAT_SYSCALL_WRAP2(chmod, const char __user *, filename, umode_t, mode); | |
33 | COMPAT_SYSCALL_WRAP1(oldumount, char __user *, name); | |
34 | COMPAT_SYSCALL_WRAP1(alarm, unsigned int, seconds); | |
35 | COMPAT_SYSCALL_WRAP2(access, const char __user *, filename, int, mode); | |
36 | COMPAT_SYSCALL_WRAP1(nice, int, increment); | |
473a0657 HC |
37 | COMPAT_SYSCALL_WRAP2(kill, int, pid, int, sig); |
38 | COMPAT_SYSCALL_WRAP2(rename, const char __user *, oldname, const char __user *, newname); | |
39 | COMPAT_SYSCALL_WRAP2(mkdir, const char __user *, pathname, umode_t, mode); | |
40 | COMPAT_SYSCALL_WRAP1(rmdir, const char __user *, pathname); | |
41 | COMPAT_SYSCALL_WRAP1(dup, unsigned int, fildes); | |
42 | COMPAT_SYSCALL_WRAP1(pipe, int __user *, fildes); | |
43 | COMPAT_SYSCALL_WRAP1(brk, compat_ulong_t, brk); | |
44 | COMPAT_SYSCALL_WRAP2(signal, int, sig, __sighandler_t, handler); | |
45 | COMPAT_SYSCALL_WRAP1(acct, const char __user *, name); | |
46 | COMPAT_SYSCALL_WRAP2(umount, char __user *, name, int, flags); | |
be06fbf8 HC |
47 | COMPAT_SYSCALL_WRAP2(setpgid, compat_pid_t, pid, compat_pid_t, pgid); |
48 | COMPAT_SYSCALL_WRAP1(umask, int, mask); | |
49 | COMPAT_SYSCALL_WRAP1(chroot, const char __user *, filename); | |
50 | COMPAT_SYSCALL_WRAP2(dup2, unsigned int, oldfd, unsigned int, newfd); | |
51 | COMPAT_SYSCALL_WRAP3(sigsuspend, int, unused1, int, unused2, compat_old_sigset_t, mask); | |
52 | COMPAT_SYSCALL_WRAP2(sethostname, char __user *, name, int, len); | |
53 | COMPAT_SYSCALL_WRAP2(symlink, const char __user *, old, const char __user *, new); | |
54 | COMPAT_SYSCALL_WRAP3(readlink, const char __user *, path, char __user *, buf, int, bufsiz); | |
55 | COMPAT_SYSCALL_WRAP1(uselib, const char __user *, library); | |
56 | COMPAT_SYSCALL_WRAP2(swapon, const char __user *, specialfile, int, swap_flags); | |
c355ce18 HC |
57 | COMPAT_SYSCALL_WRAP4(reboot, int, magic1, int, magic2, unsigned int, cmd, void __user *, arg); |
58 | COMPAT_SYSCALL_WRAP2(munmap, compat_ulong_t, addr, compat_size_t, len); | |
59 | COMPAT_SYSCALL_WRAP2(fchmod, unsigned int, fd, umode_t, mode); | |
60 | COMPAT_SYSCALL_WRAP2(getpriority, int, which, int, who); | |
61 | COMPAT_SYSCALL_WRAP3(setpriority, int, which, int, who, int, niceval); | |
62 | COMPAT_SYSCALL_WRAP3(syslog, int, type, char __user *, buf, int, len); | |
63 | COMPAT_SYSCALL_WRAP1(swapoff, const char __user *, specialfile); | |
64 | COMPAT_SYSCALL_WRAP1(fsync, unsigned int, fd); | |
65 | COMPAT_SYSCALL_WRAP2(setdomainname, char __user *, name, int, len); | |
66 | COMPAT_SYSCALL_WRAP1(newuname, struct new_utsname __user *, name); | |
86d295e1 HC |
67 | COMPAT_SYSCALL_WRAP3(mprotect, compat_ulong_t, start, compat_size_t, len, compat_ulong_t, prot); |
68 | COMPAT_SYSCALL_WRAP3(init_module, void __user *, umod, compat_ulong_t, len, const char __user *, uargs); | |
69 | COMPAT_SYSCALL_WRAP2(delete_module, const char __user *, name_user, unsigned int, flags); | |
70 | COMPAT_SYSCALL_WRAP4(quotactl, unsigned int, cmd, const char __user *, special, qid_t, id, void __user *, addr); | |
71 | COMPAT_SYSCALL_WRAP1(getpgid, compat_pid_t, pid); | |
72 | COMPAT_SYSCALL_WRAP1(fchdir, unsigned int, fd); | |
73 | COMPAT_SYSCALL_WRAP2(bdflush, int, func, compat_long_t, data); | |
74 | COMPAT_SYSCALL_WRAP3(sysfs, int, option, compat_ulong_t, arg1, compat_ulong_t, arg2); | |
75 | COMPAT_SYSCALL_WRAP1(s390_personality, unsigned int, personality); | |
76 | COMPAT_SYSCALL_WRAP5(llseek, unsigned int, fd, u32, high, u32, low, loff_t __user *, result, unsigned int, whence); | |
ce5cef7e HC |
77 | COMPAT_SYSCALL_WRAP2(flock, unsigned int, fd, unsigned int, cmd); |
78 | COMPAT_SYSCALL_WRAP3(msync, compat_ulong_t, start, compat_size_t, len, int, flags); | |
79 | COMPAT_SYSCALL_WRAP1(getsid, compat_pid_t, pid); | |
80 | COMPAT_SYSCALL_WRAP1(fdatasync, unsigned int, fd); | |
81 | COMPAT_SYSCALL_WRAP2(mlock, compat_ulong_t, start, compat_size_t, len); | |
82 | COMPAT_SYSCALL_WRAP2(munlock, compat_ulong_t, start, compat_size_t, len); | |
83 | COMPAT_SYSCALL_WRAP1(mlockall, int, flags); | |
84 | COMPAT_SYSCALL_WRAP2(sched_setparam, compat_pid_t, pid, struct sched_param __user *, param); | |
85 | COMPAT_SYSCALL_WRAP2(sched_getparam, compat_pid_t, pid, struct sched_param __user *, param); | |
86 | COMPAT_SYSCALL_WRAP3(sched_setscheduler, compat_pid_t, pid, int, policy, struct sched_param __user *, param); | |
0ebe3eec HC |
87 | COMPAT_SYSCALL_WRAP1(sched_getscheduler, compat_pid_t, pid); |
88 | COMPAT_SYSCALL_WRAP1(sched_get_priority_max, int, policy); | |
89 | COMPAT_SYSCALL_WRAP1(sched_get_priority_min, int, policy); | |
90 | COMPAT_SYSCALL_WRAP5(mremap, u32, addr, u32, old_len, u32, new_len, u32, flags, u32, new_addr); | |
91 | COMPAT_SYSCALL_WRAP3(poll, struct pollfd __user *, ufds, unsigned int, nfds, int, timeout); | |
92 | COMPAT_SYSCALL_WRAP5(prctl, int, option, u32, arg2, u32, arg3, u32, arg4, u32, arg5); | |
93 | COMPAT_SYSCALL_WRAP2(getcwd, char __user *, buf, u32, size); | |
94 | COMPAT_SYSCALL_WRAP2(capget, cap_user_header_t, header, cap_user_data_t, dataptr); | |
95 | COMPAT_SYSCALL_WRAP2(capset, cap_user_header_t, header, const cap_user_data_t, data); | |
96 | COMPAT_SYSCALL_WRAP3(lchown, const char __user *, filename, compat_uid_t, user, compat_gid_t, group); | |
47b3ae9b HC |
97 | COMPAT_SYSCALL_WRAP2(setreuid, compat_uid_t, ruid, compat_uid_t, euid); |
98 | COMPAT_SYSCALL_WRAP2(setregid, compat_gid_t, rgid, compat_gid_t, egid); | |
99 | COMPAT_SYSCALL_WRAP2(getgroups, int, gidsetsize, compat_gid_t __user *, grouplist); | |
100 | COMPAT_SYSCALL_WRAP2(setgroups, int, gidsetsize, compat_gid_t __user *, grouplist); | |
101 | COMPAT_SYSCALL_WRAP3(fchown, unsigned int, fd, compat_uid_t, user, compat_gid_t, group); | |
102 | COMPAT_SYSCALL_WRAP3(setresuid, compat_uid_t, ruid, compat_uid_t, euid, compat_uid_t, suid); | |
103 | COMPAT_SYSCALL_WRAP3(getresuid, compat_uid_t __user *, ruid, compat_uid_t __user *, euid, compat_uid_t __user *, suid); | |
104 | COMPAT_SYSCALL_WRAP3(setresgid, compat_gid_t, rgid, compat_gid_t, egid, compat_gid_t, sgid); | |
105 | COMPAT_SYSCALL_WRAP3(getresgid, compat_gid_t __user *, rgid, compat_gid_t __user *, egid, compat_gid_t __user *, sgid); | |
106 | COMPAT_SYSCALL_WRAP3(chown, const char __user *, filename, compat_uid_t, user, compat_gid_t, group); | |
24e4c2aa HC |
107 | COMPAT_SYSCALL_WRAP1(setuid, compat_uid_t, uid); |
108 | COMPAT_SYSCALL_WRAP1(setgid, compat_gid_t, gid); | |
109 | COMPAT_SYSCALL_WRAP1(setfsuid, compat_uid_t, uid); | |
110 | COMPAT_SYSCALL_WRAP1(setfsgid, compat_gid_t, gid); | |
111 | COMPAT_SYSCALL_WRAP2(pivot_root, const char __user *, new_root, const char __user *, put_old); | |
112 | COMPAT_SYSCALL_WRAP3(mincore, compat_ulong_t, start, compat_size_t, len, unsigned char __user *, vec); | |
113 | COMPAT_SYSCALL_WRAP3(madvise, compat_ulong_t, start, compat_size_t, len, int, behavior); | |
114 | COMPAT_SYSCALL_WRAP5(setxattr, const char __user *, path, const char __user *, name, const void __user *, value, compat_size_t, size, int, flags); | |
115 | COMPAT_SYSCALL_WRAP5(lsetxattr, const char __user *, path, const char __user *, name, const void __user *, value, compat_size_t, size, int, flags); | |
116 | COMPAT_SYSCALL_WRAP5(fsetxattr, int, fd, const char __user *, name, const void __user *, value, compat_size_t, size, int, flags); | |
18421166 HC |
117 | COMPAT_SYSCALL_WRAP3(getdents64, unsigned int, fd, struct linux_dirent64 __user *, dirent, unsigned int, count); |
118 | COMPAT_SYSCALL_WRAP4(getxattr, const char __user *, path, const char __user *, name, void __user *, value, compat_size_t, size); | |
119 | COMPAT_SYSCALL_WRAP4(lgetxattr, const char __user *, path, const char __user *, name, void __user *, value, compat_size_t, size); | |
120 | COMPAT_SYSCALL_WRAP4(fgetxattr, int, fd, const char __user *, name, void __user *, value, compat_size_t, size); | |
121 | COMPAT_SYSCALL_WRAP3(listxattr, const char __user *, path, char __user *, list, compat_size_t, size); | |
122 | COMPAT_SYSCALL_WRAP3(llistxattr, const char __user *, path, char __user *, list, compat_size_t, size); | |
123 | COMPAT_SYSCALL_WRAP3(flistxattr, int, fd, char __user *, list, compat_size_t, size); | |
124 | COMPAT_SYSCALL_WRAP2(removexattr, const char __user *, path, const char __user *, name); | |
125 | COMPAT_SYSCALL_WRAP2(lremovexattr, const char __user *, path, const char __user *, name); | |
126 | COMPAT_SYSCALL_WRAP2(fremovexattr, int, fd, const char __user *, name); | |
9c4d62fa HC |
127 | COMPAT_SYSCALL_WRAP1(exit_group, int, error_code); |
128 | COMPAT_SYSCALL_WRAP1(set_tid_address, int __user *, tidptr); | |
129 | COMPAT_SYSCALL_WRAP1(epoll_create, int, size); | |
130 | COMPAT_SYSCALL_WRAP4(epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event __user *, event); | |
131 | COMPAT_SYSCALL_WRAP4(epoll_wait, int, epfd, struct epoll_event __user *, events, int, maxevents, int, timeout); | |
132 | COMPAT_SYSCALL_WRAP1(timer_getoverrun, timer_t, timer_id); | |
133 | COMPAT_SYSCALL_WRAP1(timer_delete, compat_timer_t, compat_timer_id); | |
134 | COMPAT_SYSCALL_WRAP1(io_destroy, compat_aio_context_t, ctx); | |
135 | COMPAT_SYSCALL_WRAP3(io_cancel, compat_aio_context_t, ctx_id, struct iocb __user *, iocb, struct io_event __user *, result); | |
136 | COMPAT_SYSCALL_WRAP1(mq_unlink, const char __user *, name); |