diff options
| author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2009-01-14 08:14:10 -0500 |
|---|---|---|
| committer | Heiko Carstens <heiko.carstens@de.ibm.com> | 2009-01-14 08:15:21 -0500 |
| commit | 17da2bd90abf428523de0fb98f7075e00e3ed42e (patch) | |
| tree | 4f2daf3cb792b7da62e6ae771b58902cc5ea24ab /kernel | |
| parent | 754fe8d297bfae7b77f7ce866e2fb0c5fb186506 (diff) | |
[CVE-2009-0029] System call wrappers part 08
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/exit.c | 7 | ||||
| -rw-r--r-- | kernel/fork.c | 2 | ||||
| -rw-r--r-- | kernel/futex.c | 6 | ||||
| -rw-r--r-- | kernel/module.c | 10 | ||||
| -rw-r--r-- | kernel/sched.c | 2 | ||||
| -rw-r--r-- | kernel/signal.c | 18 |
6 files changed, 19 insertions, 26 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 08895df0eab3..f80dec3f1875 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -1754,9 +1754,8 @@ end: | |||
| 1754 | return retval; | 1754 | return retval; |
| 1755 | } | 1755 | } |
| 1756 | 1756 | ||
| 1757 | asmlinkage long sys_waitid(int which, pid_t upid, | 1757 | SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *, |
| 1758 | struct siginfo __user *infop, int options, | 1758 | infop, int, options, struct rusage __user *, ru) |
| 1759 | struct rusage __user *ru) | ||
| 1760 | { | 1759 | { |
| 1761 | struct pid *pid = NULL; | 1760 | struct pid *pid = NULL; |
| 1762 | enum pid_type type; | 1761 | enum pid_type type; |
| @@ -1833,7 +1832,7 @@ SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr, | |||
| 1833 | * sys_waitpid() remains for compatibility. waitpid() should be | 1832 | * sys_waitpid() remains for compatibility. waitpid() should be |
| 1834 | * implemented by calling sys_wait4() from libc.a. | 1833 | * implemented by calling sys_wait4() from libc.a. |
| 1835 | */ | 1834 | */ |
| 1836 | asmlinkage long sys_waitpid(pid_t pid, int __user *stat_addr, int options) | 1835 | SYSCALL_DEFINE3(waitpid, pid_t, pid, int __user *, stat_addr, int, options) |
| 1837 | { | 1836 | { |
| 1838 | return sys_wait4(pid, stat_addr, options, NULL); | 1837 | return sys_wait4(pid, stat_addr, options, NULL); |
| 1839 | } | 1838 | } |
diff --git a/kernel/fork.c b/kernel/fork.c index 1d68f1255dd8..8eb37d38c6a4 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
| @@ -901,7 +901,7 @@ static void copy_flags(unsigned long clone_flags, struct task_struct *p) | |||
| 901 | clear_freeze_flag(p); | 901 | clear_freeze_flag(p); |
| 902 | } | 902 | } |
| 903 | 903 | ||
| 904 | asmlinkage long sys_set_tid_address(int __user *tidptr) | 904 | SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr) |
| 905 | { | 905 | { |
| 906 | current->clear_child_tid = tidptr; | 906 | current->clear_child_tid = tidptr; |
| 907 | 907 | ||
diff --git a/kernel/futex.c b/kernel/futex.c index 002aa189eb09..e86931d8d4e9 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
| @@ -1978,9 +1978,9 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout, | |||
| 1978 | } | 1978 | } |
| 1979 | 1979 | ||
| 1980 | 1980 | ||
| 1981 | asmlinkage long sys_futex(u32 __user *uaddr, int op, u32 val, | 1981 | SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, |
| 1982 | struct timespec __user *utime, u32 __user *uaddr2, | 1982 | struct timespec __user *, utime, u32 __user *, uaddr2, |
| 1983 | u32 val3) | 1983 | u32, val3) |
| 1984 | { | 1984 | { |
| 1985 | struct timespec ts; | 1985 | struct timespec ts; |
| 1986 | ktime_t t, *tp = NULL; | 1986 | ktime_t t, *tp = NULL; |
diff --git a/kernel/module.c b/kernel/module.c index c9332c90d5a0..e8b51d41dd72 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
| @@ -743,8 +743,8 @@ static void wait_for_zero_refcount(struct module *mod) | |||
| 743 | mutex_lock(&module_mutex); | 743 | mutex_lock(&module_mutex); |
| 744 | } | 744 | } |
| 745 | 745 | ||
| 746 | asmlinkage long | 746 | SYSCALL_DEFINE2(delete_module, const char __user *, name_user, |
| 747 | sys_delete_module(const char __user *name_user, unsigned int flags) | 747 | unsigned int, flags) |
| 748 | { | 748 | { |
| 749 | struct module *mod; | 749 | struct module *mod; |
| 750 | char name[MODULE_NAME_LEN]; | 750 | char name[MODULE_NAME_LEN]; |
| @@ -2296,10 +2296,8 @@ static noinline struct module *load_module(void __user *umod, | |||
| 2296 | } | 2296 | } |
| 2297 | 2297 | ||
| 2298 | /* This is where the real work happens */ | 2298 | /* This is where the real work happens */ |
| 2299 | asmlinkage long | 2299 | SYSCALL_DEFINE3(init_module, void __user *, umod, |
| 2300 | sys_init_module(void __user *umod, | 2300 | unsigned long, len, const char __user *, uargs) |
| 2301 | unsigned long len, | ||
| 2302 | const char __user *uargs) | ||
| 2303 | { | 2301 | { |
| 2304 | struct module *mod; | 2302 | struct module *mod; |
| 2305 | int ret = 0; | 2303 | int ret = 0; |
diff --git a/kernel/sched.c b/kernel/sched.c index 65c02037b052..eb1931eef587 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -5869,7 +5869,7 @@ SYSCALL_DEFINE1(sched_get_priority_min, int, policy) | |||
| 5869 | * this syscall writes the default timeslice value of a given process | 5869 | * this syscall writes the default timeslice value of a given process |
| 5870 | * into the user-space timespec buffer. A value of '0' means infinity. | 5870 | * into the user-space timespec buffer. A value of '0' means infinity. |
| 5871 | */ | 5871 | */ |
| 5872 | SYSCALL_DEFINE4(sched_rr_get_interval, pid_t, pid, | 5872 | SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid, |
| 5873 | struct timespec __user *, interval) | 5873 | struct timespec __user *, interval) |
| 5874 | { | 5874 | { |
| 5875 | struct task_struct *p; | 5875 | struct task_struct *p; |
diff --git a/kernel/signal.c b/kernel/signal.c index 41f32e08615e..278cc8737f17 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
| @@ -2014,8 +2014,8 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset) | |||
| 2014 | return error; | 2014 | return error; |
| 2015 | } | 2015 | } |
| 2016 | 2016 | ||
| 2017 | asmlinkage long | 2017 | SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set, |
| 2018 | sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize) | 2018 | sigset_t __user *, oset, size_t, sigsetsize) |
| 2019 | { | 2019 | { |
| 2020 | int error = -EINVAL; | 2020 | int error = -EINVAL; |
| 2021 | sigset_t old_set, new_set; | 2021 | sigset_t old_set, new_set; |
| @@ -2074,8 +2074,7 @@ out: | |||
| 2074 | return error; | 2074 | return error; |
| 2075 | } | 2075 | } |
| 2076 | 2076 | ||
| 2077 | asmlinkage long | 2077 | SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize) |
| 2078 | sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize) | ||
| 2079 | { | 2078 | { |
| 2080 | return do_sigpending(set, sigsetsize); | 2079 | return do_sigpending(set, sigsetsize); |
| 2081 | } | 2080 | } |
| @@ -2146,11 +2145,9 @@ int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from) | |||
| 2146 | 2145 | ||
| 2147 | #endif | 2146 | #endif |
| 2148 | 2147 | ||
| 2149 | asmlinkage long | 2148 | SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, |
| 2150 | sys_rt_sigtimedwait(const sigset_t __user *uthese, | 2149 | siginfo_t __user *, uinfo, const struct timespec __user *, uts, |
| 2151 | siginfo_t __user *uinfo, | 2150 | size_t, sigsetsize) |
| 2152 | const struct timespec __user *uts, | ||
| 2153 | size_t sigsetsize) | ||
| 2154 | { | 2151 | { |
| 2155 | int ret, sig; | 2152 | int ret, sig; |
| 2156 | sigset_t these; | 2153 | sigset_t these; |
| @@ -2223,8 +2220,7 @@ sys_rt_sigtimedwait(const sigset_t __user *uthese, | |||
| 2223 | return ret; | 2220 | return ret; |
| 2224 | } | 2221 | } |
| 2225 | 2222 | ||
| 2226 | asmlinkage long | 2223 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
| 2227 | sys_kill(pid_t pid, int sig) | ||
| 2228 | { | 2224 | { |
| 2229 | struct siginfo info; | 2225 | struct siginfo info; |
| 2230 | 2226 | ||
