mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 11:16:11 +00:00
[CVE-2009-0029] System call wrappers part 08
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
parent
754fe8d297
commit
17da2bd90a
6 changed files with 19 additions and 26 deletions
|
@ -1754,9 +1754,8 @@ end:
|
|||
return retval;
|
||||
}
|
||||
|
||||
asmlinkage long sys_waitid(int which, pid_t upid,
|
||||
struct siginfo __user *infop, int options,
|
||||
struct rusage __user *ru)
|
||||
SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
|
||||
infop, int, options, struct rusage __user *, ru)
|
||||
{
|
||||
struct pid *pid = NULL;
|
||||
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
|
||||
* 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);
|
||||
}
|
||||
|
|
|
@ -901,7 +901,7 @@ static void copy_flags(unsigned long clone_flags, struct task_struct *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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
struct timespec __user *utime, u32 __user *uaddr2,
|
||||
u32 val3)
|
||||
SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
|
||||
struct timespec __user *, utime, u32 __user *, uaddr2,
|
||||
u32, val3)
|
||||
{
|
||||
struct timespec ts;
|
||||
ktime_t t, *tp = NULL;
|
||||
|
|
|
@ -743,8 +743,8 @@ static void wait_for_zero_refcount(struct module *mod)
|
|||
mutex_lock(&module_mutex);
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_delete_module(const char __user *name_user, unsigned int flags)
|
||||
SYSCALL_DEFINE2(delete_module, const char __user *, name_user,
|
||||
unsigned int, flags)
|
||||
{
|
||||
struct module *mod;
|
||||
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 */
|
||||
asmlinkage long
|
||||
sys_init_module(void __user *umod,
|
||||
unsigned long len,
|
||||
const char __user *uargs)
|
||||
SYSCALL_DEFINE3(init_module, void __user *, umod,
|
||||
unsigned long, len, const char __user *, uargs)
|
||||
{
|
||||
struct module *mod;
|
||||
int ret = 0;
|
||||
|
|
|
@ -5869,7 +5869,7 @@ SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
|
|||
* this syscall writes the default timeslice value of a given process
|
||||
* 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 task_struct *p;
|
||||
|
|
|
@ -2014,8 +2014,8 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize)
|
||||
SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set,
|
||||
sigset_t __user *, oset, size_t, sigsetsize)
|
||||
{
|
||||
int error = -EINVAL;
|
||||
sigset_t old_set, new_set;
|
||||
|
@ -2074,8 +2074,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize)
|
||||
SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize)
|
||||
{
|
||||
return do_sigpending(set, sigsetsize);
|
||||
}
|
||||
|
@ -2146,11 +2145,9 @@ int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from)
|
|||
|
||||
#endif
|
||||
|
||||
asmlinkage long
|
||||
sys_rt_sigtimedwait(const sigset_t __user *uthese,
|
||||
siginfo_t __user *uinfo,
|
||||
const struct timespec __user *uts,
|
||||
size_t sigsetsize)
|
||||
SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese,
|
||||
siginfo_t __user *, uinfo, const struct timespec __user *, uts,
|
||||
size_t, sigsetsize)
|
||||
{
|
||||
int ret, sig;
|
||||
sigset_t these;
|
||||
|
@ -2223,8 +2220,7 @@ sys_rt_sigtimedwait(const sigset_t __user *uthese,
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long
|
||||
sys_kill(pid_t pid, int sig)
|
||||
SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
|
||||
{
|
||||
struct siginfo info;
|
||||
|
||||
|
|
Loading…
Reference in a new issue