diff options
author | Kanoj Sarcar <kanoj@engr.sgi.com> | 2000-04-27 19:33:59 +0000 |
---|---|---|
committer | Kanoj Sarcar <kanoj@engr.sgi.com> | 2000-04-27 19:33:59 +0000 |
commit | 431d1ca27e26122bfe22f60dd9dba9c15169f447 (patch) | |
tree | 8884c756dd3eb722b815395ed5456ce313f7398a /arch/mips64 | |
parent | 866af03bbb30a1abb8369b0903681521aabf6b43 (diff) |
sigprocmask needs to be 32-bitized.
Diffstat (limited to 'arch/mips64')
-rw-r--r-- | arch/mips64/kernel/scall_o32.S | 2 | ||||
-rw-r--r-- | arch/mips64/kernel/signal32.c | 19 |
2 files changed, 20 insertions, 1 deletions
diff --git a/arch/mips64/kernel/scall_o32.S b/arch/mips64/kernel/scall_o32.S index 646876a04..847474ff3 100644 --- a/arch/mips64/kernel/scall_o32.S +++ b/arch/mips64/kernel/scall_o32.S @@ -328,7 +328,7 @@ illegal_syscall: sys sys_ni_syscall 0 /* sys_modify_ldt */ sys sys_adjtimex 1 sys sys_mprotect 3 /* 4125 */ - sys sys_sigprocmask 3 + sys sys32_sigprocmask 3 sys sys_create_module 2 sys sys_init_module 5 sys sys_delete_module 1 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."); } |