[SPARC64]: Kill bogus set_fs(KERNEL_DS) in do_rt_sigreturn().
From: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
c1e49e3a1b
Коммит
62715ec832
|
@ -289,9 +289,7 @@ void do_rt_sigreturn(struct pt_regs *regs)
|
|||
struct rt_signal_frame __user *sf;
|
||||
unsigned long tpc, tnpc, tstate;
|
||||
__siginfo_fpu_t __user *fpu_save;
|
||||
mm_segment_t old_fs;
|
||||
sigset_t set;
|
||||
stack_t st;
|
||||
int err;
|
||||
|
||||
/* Always make any pending restarted system calls return -EINTR */
|
||||
|
@ -327,7 +325,7 @@ void do_rt_sigreturn(struct pt_regs *regs)
|
|||
err |= restore_fpu_state(regs, &sf->fpu_state);
|
||||
|
||||
err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t));
|
||||
err |= __copy_from_user(&st, &sf->stack, sizeof(stack_t));
|
||||
err |= do_sigaltstack(&sf->stack, NULL, (unsigned long)sf);
|
||||
|
||||
if (err)
|
||||
goto segv;
|
||||
|
@ -335,13 +333,6 @@ void do_rt_sigreturn(struct pt_regs *regs)
|
|||
regs->tpc = tpc;
|
||||
regs->tnpc = tnpc;
|
||||
|
||||
/* It is more difficult to avoid calling this function than to
|
||||
call it and ignore errors. */
|
||||
old_fs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
do_sigaltstack((const stack_t __user *) &st, NULL, (unsigned long)sf);
|
||||
set_fs(old_fs);
|
||||
|
||||
sigdelsetmask(&set, ~_BLOCKABLE);
|
||||
spin_lock_irq(¤t->sighand->siglock);
|
||||
current->blocked = set;
|
||||
|
|
Загрузка…
Ссылка в новой задаче