summaryrefslogtreecommitdiffstats
path: root/arch/mips64/kernel/signal32.c
diff options
context:
space:
mode:
authorKanoj Sarcar <kanoj@engr.sgi.com>2000-04-27 19:33:59 +0000
committerKanoj Sarcar <kanoj@engr.sgi.com>2000-04-27 19:33:59 +0000
commit431d1ca27e26122bfe22f60dd9dba9c15169f447 (patch)
tree8884c756dd3eb722b815395ed5456ce313f7398a /arch/mips64/kernel/signal32.c
parent866af03bbb30a1abb8369b0903681521aabf6b43 (diff)
sigprocmask needs to be 32-bitized.
Diffstat (limited to 'arch/mips64/kernel/signal32.c')
-rw-r--r--arch/mips64/kernel/signal32.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/mips64/kernel/signal32.c b/arch/mips64/kernel/signal32.c
index 5a611272c..5a1ee45b0 100644
--- a/arch/mips64/kernel/signal32.c
+++ b/arch/mips64/kernel/signal32.c
@@ -684,6 +684,25 @@ printk("%s: delivering signal.\n", __FUNCTION__);
return 0;
}
+extern asmlinkage int sys_sigprocmask(int how, old_sigset_t *set,
+ old_sigset_t *oset);
+
+asmlinkage int sys32_sigprocmask(int how, old_sigset_t32 *set,
+ old_sigset_t32 *oset)
+{
+ old_sigset_t s;
+ int ret;
+ mm_segment_t old_fs = get_fs();
+
+ if (set && get_user (s, set)) return -EFAULT;
+ set_fs (KERNEL_DS);
+ ret = sys_sigprocmask(how, set ? &s : NULL, oset ? &s : NULL);
+ set_fs (old_fs);
+ if (ret) return ret;
+ if (oset && put_user (s, oset)) return -EFAULT;
+ return 0;
+}
+
/* Dummies ... */
asmlinkage void sys32_sigpending(void) { panic(__FUNCTION__ " called."); }