From 42f3678e165dcff34fd05379fa7c76608a6fc9ec Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Tue, 8 Apr 2003 07:33:49 -0700 Subject: [PATCH] Annotate i386/signal.c with address space type annotations. --- arch/i386/kernel/signal.c | 26 +++++++++++++------------- include/asm-generic/siginfo.h | 2 +- include/asm-i386/i387.h | 4 ++-- include/asm-i386/sigcontext.h | 4 +++- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c index ca49c4e6e02aa..3624e3323f240 100644 --- a/arch/i386/kernel/signal.c +++ b/arch/i386/kernel/signal.c @@ -53,7 +53,7 @@ sys_sigsuspend(int history0, int history1, old_sigset_t mask) } asmlinkage int -sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize) +sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize) { struct pt_regs * regs = (struct pt_regs *) &unewset; sigset_t saveset, newset; @@ -82,8 +82,8 @@ sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize) } asmlinkage int -sys_sigaction(int sig, const struct old_sigaction *act, - struct old_sigaction *oact) +sys_sigaction(int sig, const struct old_sigaction __user *act, + struct old_sigaction __user *oact) { struct k_sigaction new_ka, old_ka; int ret; @@ -148,7 +148,7 @@ struct rt_sigframe }; static int -restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *peax) +restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *peax) { unsigned int err = 0; @@ -192,7 +192,7 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *peax) } { - struct _fpstate * buf; + struct _fpstate __user * buf; err |= __get_user(buf, &sc->fpstate); if (buf) { if (verify_area(VERIFY_READ, buf, sizeof(*buf))) @@ -211,7 +211,7 @@ badframe: asmlinkage int sys_sigreturn(unsigned long __unused) { struct pt_regs *regs = (struct pt_regs *) &__unused; - struct sigframe *frame = (struct sigframe *)(regs->esp - 8); + struct sigframe __user *frame = (struct sigframe __user *)(regs->esp - 8); sigset_t set; int eax; @@ -241,7 +241,7 @@ badframe: asmlinkage int sys_rt_sigreturn(unsigned long __unused) { struct pt_regs *regs = (struct pt_regs *) &__unused; - struct rt_sigframe *frame = (struct rt_sigframe *)(regs->esp - 4); + struct rt_sigframe __user *frame = (struct rt_sigframe __user *)(regs->esp - 4); sigset_t set; stack_t st; int eax; @@ -278,7 +278,7 @@ badframe: */ static int -setup_sigcontext(struct sigcontext *sc, struct _fpstate *fpstate, +setup_sigcontext(struct sigcontext __user *sc, struct _fpstate __user *fpstate, struct pt_regs *regs, unsigned long mask) { int tmp, err = 0; @@ -323,7 +323,7 @@ setup_sigcontext(struct sigcontext *sc, struct _fpstate *fpstate, /* * Determine which stack to use.. */ -static inline void * +static inline void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) { unsigned long esp; @@ -344,14 +344,14 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) esp = (unsigned long) ka->sa.sa_restorer; } - return (void *)((esp - frame_size) & -8ul); + return (void __user *)((esp - frame_size) & -8ul); } static void setup_frame(int sig, struct k_sigaction *ka, sigset_t *set, struct pt_regs * regs) { void *restorer; - struct sigframe *frame; + struct sigframe __user *frame; int err = 0; frame = get_sigframe(ka, regs, sizeof(*frame)); @@ -373,7 +373,7 @@ static void setup_frame(int sig, struct k_sigaction *ka, goto give_sigsegv; if (_NSIG_WORDS > 1) { - err |= __copy_to_user(frame->extramask, &set->sig[1], + err |= __copy_to_user(&frame->extramask, &set->sig[1], sizeof(frame->extramask)); } if (err) @@ -428,7 +428,7 @@ static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, sigset_t *set, struct pt_regs * regs) { void *restorer; - struct rt_sigframe *frame; + struct rt_sigframe __user *frame; int err = 0; frame = get_sigframe(ka, regs, sizeof(*frame)); diff --git a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h index 8dfbdbdd7344c..209ba0222647a 100644 --- a/include/asm-generic/siginfo.h +++ b/include/asm-generic/siginfo.h @@ -275,7 +275,7 @@ static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) #endif -extern int copy_siginfo_to_user(struct siginfo *to, struct siginfo *from); +extern int copy_siginfo_to_user(struct siginfo __user *to, struct siginfo *from); #endif /* __KERNEL__ */ diff --git a/include/asm-i386/i387.h b/include/asm-i386/i387.h index 805f297e0514f..c45379bf28f7b 100644 --- a/include/asm-i386/i387.h +++ b/include/asm-i386/i387.h @@ -81,8 +81,8 @@ extern void set_fpu_mxcsr( struct task_struct *tsk, unsigned short mxcsr ); /* * Signal frame handlers... */ -extern int save_i387( struct _fpstate *buf ); -extern int restore_i387( struct _fpstate *buf ); +extern int save_i387( struct _fpstate __user *buf ); +extern int restore_i387( struct _fpstate __user *buf ); /* * ptrace request handers... diff --git a/include/asm-i386/sigcontext.h b/include/asm-i386/sigcontext.h index b16c6c12a8605..aaef089a77879 100644 --- a/include/asm-i386/sigcontext.h +++ b/include/asm-i386/sigcontext.h @@ -1,6 +1,8 @@ #ifndef _ASMi386_SIGCONTEXT_H #define _ASMi386_SIGCONTEXT_H +#include + /* * As documented in the iBCS2 standard.. * @@ -74,7 +76,7 @@ struct sigcontext { unsigned long eflags; unsigned long esp_at_signal; unsigned short ss, __ssh; - struct _fpstate * fpstate; + struct _fpstate __user * fpstate; unsigned long oldmask; unsigned long cr2; }; -- 2.53.0