git.samba.org
/
sfrench
/
cifs-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux...
[sfrench/cifs-2.6.git]
/
arch
/
sparc64
/
kernel
/
signal.c
diff --git
a/arch/sparc64/kernel/signal.c
b/arch/sparc64/kernel/signal.c
index 203e87301005c985a95d08208c94def7222d47a2..94a9d64208eee17126fb2ef996ad07f3ece660fd 100644
(file)
--- a/
arch/sparc64/kernel/signal.c
+++ b/
arch/sparc64/kernel/signal.c
@@
-32,6
+32,9
@@
#include <asm/siginfo.h>
#include <asm/visasm.h>
#include <asm/siginfo.h>
#include <asm/visasm.h>
+#include "entry.h"
+#include "systbls.h"
+
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
/* {set, get}context() needed for 64-bit SparcLinux userland. */
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
/* {set, get}context() needed for 64-bit SparcLinux userland. */
@@
-289,9
+292,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;
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;
sigset_t set;
- stack_t st;
int err;
/* Always make any pending restarted system calls return -EINTR */
int err;
/* Always make any pending restarted system calls return -EINTR */
@@
-327,20
+328,13
@@
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 |= 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;
if (err)
goto segv;
-
+
regs->tpc = tpc;
regs->tnpc = tnpc;
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);
sigdelsetmask(&set, ~_BLOCKABLE);
spin_lock_irq(¤t->sighand->siglock);