Commit 8ffe0fb0 authored by Linus Torvalds's avatar Linus Torvalds Committed by Linus Torvalds

Add __user attributes to user pointers in kernel/signal.c. This

was the first file tested with my type checker with the anal
pointer attribute checking turned on.
parent c98e7542
...@@ -1720,7 +1720,7 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset) ...@@ -1720,7 +1720,7 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
} }
asmlinkage long asmlinkage long
sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize) sys_rt_sigprocmask(int how, sigset_t __user *set, 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;
...@@ -1755,7 +1755,7 @@ sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize) ...@@ -1755,7 +1755,7 @@ sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize)
return error; return error;
} }
long do_sigpending(void *set, unsigned long sigsetsize) long do_sigpending(void __user *set, unsigned long sigsetsize)
{ {
long error = -EINVAL; long error = -EINVAL;
sigset_t pending; sigset_t pending;
...@@ -1780,14 +1780,14 @@ long do_sigpending(void *set, unsigned long sigsetsize) ...@@ -1780,14 +1780,14 @@ long do_sigpending(void *set, unsigned long sigsetsize)
} }
asmlinkage long asmlinkage long
sys_rt_sigpending(sigset_t *set, size_t sigsetsize) sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize)
{ {
return do_sigpending(set, sigsetsize); return do_sigpending(set, sigsetsize);
} }
#ifndef HAVE_ARCH_COPY_SIGINFO_TO_USER #ifndef HAVE_ARCH_COPY_SIGINFO_TO_USER
int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from) int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from)
{ {
int err; int err;
...@@ -1850,8 +1850,10 @@ int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from) ...@@ -1850,8 +1850,10 @@ int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from)
#endif #endif
asmlinkage long asmlinkage long
sys_rt_sigtimedwait(const sigset_t *uthese, siginfo_t *uinfo, sys_rt_sigtimedwait(const sigset_t __user *uthese,
const struct timespec *uts, size_t sigsetsize) siginfo_t __user *uinfo,
const struct timespec __user *uts,
size_t sigsetsize)
{ {
int ret, sig; int ret, sig;
sigset_t these; sigset_t these;
...@@ -1980,7 +1982,7 @@ sys_tkill(int pid, int sig) ...@@ -1980,7 +1982,7 @@ sys_tkill(int pid, int sig)
} }
asmlinkage long asmlinkage long
sys_rt_sigqueueinfo(int pid, int sig, siginfo_t *uinfo) sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo)
{ {
siginfo_t info; siginfo_t info;
...@@ -2069,7 +2071,7 @@ do_sigaction(int sig, const struct k_sigaction *act, struct k_sigaction *oact) ...@@ -2069,7 +2071,7 @@ do_sigaction(int sig, const struct k_sigaction *act, struct k_sigaction *oact)
} }
int int
do_sigaltstack (const stack_t *uss, stack_t *uoss, unsigned long sp) do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long sp)
{ {
stack_t oss; stack_t oss;
int error; int error;
...@@ -2133,7 +2135,7 @@ do_sigaltstack (const stack_t *uss, stack_t *uoss, unsigned long sp) ...@@ -2133,7 +2135,7 @@ do_sigaltstack (const stack_t *uss, stack_t *uoss, unsigned long sp)
} }
asmlinkage long asmlinkage long
sys_sigpending(old_sigset_t *set) sys_sigpending(old_sigset_t __user *set)
{ {
return do_sigpending(set, sizeof(*set)); return do_sigpending(set, sizeof(*set));
} }
...@@ -2142,7 +2144,7 @@ sys_sigpending(old_sigset_t *set) ...@@ -2142,7 +2144,7 @@ sys_sigpending(old_sigset_t *set)
/* Alpha has its own versions with special arguments. */ /* Alpha has its own versions with special arguments. */
asmlinkage long asmlinkage long
sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset) sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset)
{ {
int error; int error;
old_sigset_t old_set, new_set; old_sigset_t old_set, new_set;
...@@ -2192,7 +2194,9 @@ sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset) ...@@ -2192,7 +2194,9 @@ sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset)
#ifndef __sparc__ #ifndef __sparc__
asmlinkage long asmlinkage long
sys_rt_sigaction(int sig, const struct sigaction *act, struct sigaction *oact, sys_rt_sigaction(int sig,
const struct sigaction __user *act,
struct sigaction __user *oact,
size_t sigsetsize) size_t sigsetsize)
{ {
struct k_sigaction new_sa, old_sa; struct k_sigaction new_sa, old_sa;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment