|
@@ -162,7 +162,8 @@ asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *uss_ptr,
|
|
|
}
|
|
|
seg = get_fs();
|
|
|
set_fs(KERNEL_DS);
|
|
|
- ret = do_sigaltstack(uss_ptr ? &uss : NULL, &uoss, regs->sp);
|
|
|
+ ret = do_sigaltstack((stack_t __force __user *) (uss_ptr ? &uss : NULL),
|
|
|
+ (stack_t __force __user *) &uoss, regs->sp);
|
|
|
set_fs(seg);
|
|
|
if (ret >= 0 && uoss_ptr) {
|
|
|
if (!access_ok(VERIFY_WRITE, uoss_ptr, sizeof(stack_ia32_t)))
|
|
@@ -361,7 +362,7 @@ static int ia32_setup_sigcontext(struct sigcontext_ia32 __user *sc,
|
|
|
*/
|
|
|
static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
|
|
|
size_t frame_size,
|
|
|
- void **fpstate)
|
|
|
+ void __user **fpstate)
|
|
|
{
|
|
|
unsigned long sp;
|
|
|
|
|
@@ -382,7 +383,7 @@ static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
|
|
|
|
|
|
if (used_math()) {
|
|
|
sp = sp - sig_xstate_ia32_size;
|
|
|
- *fpstate = (struct _fpstate_ia32 *) sp;
|
|
|
+ *fpstate = (struct _fpstate_ia32 __user *) sp;
|
|
|
if (save_i387_xstate_ia32(*fpstate) < 0)
|
|
|
return (void __user *) -1L;
|
|
|
}
|
|
@@ -448,7 +449,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
|
|
|
* These are actually not used anymore, but left because some
|
|
|
* gdb versions depend on them as a marker.
|
|
|
*/
|
|
|
- put_user_ex(*((u64 *)&code), (u64 *)frame->retcode);
|
|
|
+ put_user_ex(*((u64 *)&code), (u64 __user *)frame->retcode);
|
|
|
} put_user_catch(err);
|
|
|
|
|
|
if (err)
|
|
@@ -529,7 +530,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
|
|
|
* Not actually used anymore, but left because some gdb
|
|
|
* versions need it.
|
|
|
*/
|
|
|
- put_user_ex(*((u64 *)&code), (u64 *)frame->retcode);
|
|
|
+ put_user_ex(*((u64 *)&code), (u64 __user *)frame->retcode);
|
|
|
} put_user_catch(err);
|
|
|
|
|
|
if (err)
|