[CVE-2009-0029] System call wrappers part 08

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
Heiko Carstens 2009-01-14 14:14:10 +01:00
parent 754fe8d297
commit 17da2bd90a
6 changed files with 19 additions and 26 deletions

View File

@ -1754,9 +1754,8 @@ static long do_wait(enum pid_type type, struct pid *pid, int options,
return retval; return retval;
} }
asmlinkage long sys_waitid(int which, pid_t upid, SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
struct siginfo __user *infop, int options, infop, int, options, struct rusage __user *, ru)
struct rusage __user *ru)
{ {
struct pid *pid = NULL; struct pid *pid = NULL;
enum pid_type type; enum pid_type type;
@ -1833,7 +1832,7 @@ SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr,
* sys_waitpid() remains for compatibility. waitpid() should be * sys_waitpid() remains for compatibility. waitpid() should be
* implemented by calling sys_wait4() from libc.a. * implemented by calling sys_wait4() from libc.a.
*/ */
asmlinkage long sys_waitpid(pid_t pid, int __user *stat_addr, int options) SYSCALL_DEFINE3(waitpid, pid_t, pid, int __user *, stat_addr, int, options)
{ {
return sys_wait4(pid, stat_addr, options, NULL); return sys_wait4(pid, stat_addr, options, NULL);
} }

View File

@ -901,7 +901,7 @@ static void copy_flags(unsigned long clone_flags, struct task_struct *p)
clear_freeze_flag(p); clear_freeze_flag(p);
} }
asmlinkage long sys_set_tid_address(int __user *tidptr) SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
{ {
current->clear_child_tid = tidptr; current->clear_child_tid = tidptr;

View File

@ -1978,9 +1978,9 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
} }
asmlinkage long sys_futex(u32 __user *uaddr, int op, u32 val, SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
struct timespec __user *utime, u32 __user *uaddr2, struct timespec __user *, utime, u32 __user *, uaddr2,
u32 val3) u32, val3)
{ {
struct timespec ts; struct timespec ts;
ktime_t t, *tp = NULL; ktime_t t, *tp = NULL;

View File

@ -743,8 +743,8 @@ static void wait_for_zero_refcount(struct module *mod)
mutex_lock(&module_mutex); mutex_lock(&module_mutex);
} }
asmlinkage long SYSCALL_DEFINE2(delete_module, const char __user *, name_user,
sys_delete_module(const char __user *name_user, unsigned int flags) unsigned int, flags)
{ {
struct module *mod; struct module *mod;
char name[MODULE_NAME_LEN]; char name[MODULE_NAME_LEN];
@ -2296,10 +2296,8 @@ static noinline struct module *load_module(void __user *umod,
} }
/* This is where the real work happens */ /* This is where the real work happens */
asmlinkage long SYSCALL_DEFINE3(init_module, void __user *, umod,
sys_init_module(void __user *umod, unsigned long, len, const char __user *, uargs)
unsigned long len,
const char __user *uargs)
{ {
struct module *mod; struct module *mod;
int ret = 0; int ret = 0;

View File

@ -5869,7 +5869,7 @@ SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
* this syscall writes the default timeslice value of a given process * this syscall writes the default timeslice value of a given process
* into the user-space timespec buffer. A value of '0' means infinity. * into the user-space timespec buffer. A value of '0' means infinity.
*/ */
SYSCALL_DEFINE4(sched_rr_get_interval, pid_t, pid, SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid,
struct timespec __user *, interval) struct timespec __user *, interval)
{ {
struct task_struct *p; struct task_struct *p;

View File

@ -2014,8 +2014,8 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
return error; return error;
} }
asmlinkage long SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set,
sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize) sigset_t __user *, oset, size_t, sigsetsize)
{ {
int error = -EINVAL; int error = -EINVAL;
sigset_t old_set, new_set; sigset_t old_set, new_set;
@ -2074,8 +2074,7 @@ long do_sigpending(void __user *set, unsigned long sigsetsize)
return error; return error;
} }
asmlinkage long SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize)
sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize)
{ {
return do_sigpending(set, sigsetsize); return do_sigpending(set, sigsetsize);
} }
@ -2146,11 +2145,9 @@ int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from)
#endif #endif
asmlinkage long SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese,
sys_rt_sigtimedwait(const sigset_t __user *uthese, siginfo_t __user *, uinfo, const struct timespec __user *, uts,
siginfo_t __user *uinfo, size_t, sigsetsize)
const struct timespec __user *uts,
size_t sigsetsize)
{ {
int ret, sig; int ret, sig;
sigset_t these; sigset_t these;
@ -2223,8 +2220,7 @@ sys_rt_sigtimedwait(const sigset_t __user *uthese,
return ret; return ret;
} }
asmlinkage long SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
sys_kill(pid_t pid, int sig)
{ {
struct siginfo info; struct siginfo info;