提交 c2814476 编写于 作者: A Al Viro 提交者: Linus Torvalds

[PATCH] s390 signal annotations

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 0cc13a54
...@@ -143,7 +143,7 @@ int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from) ...@@ -143,7 +143,7 @@ int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from)
break; break;
case __SI_FAULT >> 16: case __SI_FAULT >> 16:
err |= __get_user(tmp, &from->si_addr); err |= __get_user(tmp, &from->si_addr);
to->si_addr = (void *)(u64) (tmp & PSW32_ADDR_INSN); to->si_addr = (void __user *)(u64) (tmp & PSW32_ADDR_INSN);
break; break;
case __SI_POLL >> 16: case __SI_POLL >> 16:
err |= __get_user(to->si_band, &from->si_band); err |= __get_user(to->si_band, &from->si_band);
...@@ -338,7 +338,7 @@ sys32_sigaltstack(const stack_t32 __user *uss, stack_t32 __user *uoss, ...@@ -338,7 +338,7 @@ sys32_sigaltstack(const stack_t32 __user *uss, stack_t32 __user *uoss,
err |= __get_user(kss.ss_flags, &uss->ss_flags); err |= __get_user(kss.ss_flags, &uss->ss_flags);
if (err) if (err)
return -EFAULT; return -EFAULT;
kss.ss_sp = (void *) ss_sp; kss.ss_sp = (void __user *) ss_sp;
} }
set_fs (KERNEL_DS); set_fs (KERNEL_DS);
...@@ -461,7 +461,7 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs) ...@@ -461,7 +461,7 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs)
goto badframe; goto badframe;
err = __get_user(ss_sp, &frame->uc.uc_stack.ss_sp); err = __get_user(ss_sp, &frame->uc.uc_stack.ss_sp);
st.ss_sp = (void *) A((unsigned long)ss_sp); st.ss_sp = compat_ptr(ss_sp);
err |= __get_user(st.ss_size, &frame->uc.uc_stack.ss_size); err |= __get_user(st.ss_size, &frame->uc.uc_stack.ss_size);
err |= __get_user(st.ss_flags, &frame->uc.uc_stack.ss_flags); err |= __get_user(st.ss_flags, &frame->uc.uc_stack.ss_flags);
if (err) if (err)
......
...@@ -376,8 +376,8 @@ static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, ...@@ -376,8 +376,8 @@ static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
/* Create the ucontext. */ /* Create the ucontext. */
err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(0, &frame->uc.uc_flags);
err |= __put_user(0, &frame->uc.uc_link); err |= __put_user(NULL, &frame->uc.uc_link);
err |= __put_user((void *)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp); err |= __put_user((void __user *)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp);
err |= __put_user(sas_ss_flags(regs->gprs[15]), err |= __put_user(sas_ss_flags(regs->gprs[15]),
&frame->uc.uc_stack.ss_flags); &frame->uc.uc_stack.ss_flags);
err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
......
...@@ -61,7 +61,7 @@ typedef struct ...@@ -61,7 +61,7 @@ typedef struct
struct sigcontext struct sigcontext
{ {
unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS]; unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS];
_sigregs *sregs; _sigregs __user *sregs;
}; };
......
...@@ -165,7 +165,7 @@ struct sigaction { ...@@ -165,7 +165,7 @@ struct sigaction {
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
typedef struct sigaltstack { typedef struct sigaltstack {
void *ss_sp; void __user *ss_sp;
int ss_flags; int ss_flags;
size_t ss_size; size_t ss_size;
} stack_t; } stack_t;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册