Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62715ec8 authored by Oleg Nesterov's avatar Oleg Nesterov Committed by David S. Miller
Browse files

[SPARC64]: Kill bogus set_fs(KERNEL_DS) in do_rt_sigreturn().



From: Oleg Nesterov <oleg@tv-sign.ru>

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c1e49e3a
Loading
Loading
Loading
Loading
+3 −12
Original line number Diff line number Diff line
@@ -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(&current->sighand->siglock);
	current->blocked = set;