Loading arch/mips/kernel/linux32.c +22 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,28 @@ sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, int options) return compat_sys_wait4(pid, stat_addr, options, NULL); } asmlinkage long sysn32_waitid(int which, compat_pid_t pid, siginfo_t __user *uinfo, int options, struct compat_rusage __user *uru) { struct rusage ru; long ret; mm_segment_t old_fs = get_fs(); set_fs (KERNEL_DS); ret = sys_waitid(which, pid, uinfo, options, uru ? (struct rusage __user *) &ru : NULL); set_fs (old_fs); if (ret < 0 || uinfo->si_signo == 0) return ret; if (uru) ret = put_compat_rusage(&ru, uru); return ret; } struct sysinfo32 { s32 uptime; u32 loads[3]; Loading arch/mips/kernel/scall64-n32.S +1 −1 Original line number Diff line number Diff line Loading @@ -358,7 +358,7 @@ EXPORT(sysn32_call_table) PTR compat_sys_mq_notify PTR compat_sys_mq_getsetattr PTR sys_ni_syscall /* 6240, sys_vserver */ PTR sys_waitid PTR sysn32_waitid PTR sys_ni_syscall /* available, was setaltroot */ PTR sys_add_key PTR sys_request_key Loading arch/mips/kernel/scall64-o32.S +1 −1 Original line number Diff line number Diff line Loading @@ -480,7 +480,7 @@ sys_call_table: PTR compat_sys_mq_notify /* 4275 */ PTR compat_sys_mq_getsetattr PTR sys_ni_syscall /* sys_vserver */ PTR sys_waitid PTR sys32_waitid PTR sys_ni_syscall /* available, was setaltroot */ PTR sys_add_key /* 4280 */ PTR sys_request_key Loading arch/mips/kernel/signal32.c +27 −0 Original line number Diff line number Diff line Loading @@ -902,3 +902,30 @@ asmlinkage int sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t *uinfo) set_fs (old_fs); return ret; } asmlinkage long sys32_waitid(int which, compat_pid_t pid, compat_siginfo_t __user *uinfo, int options, struct compat_rusage __user *uru) { siginfo_t info; struct rusage ru; long ret; mm_segment_t old_fs = get_fs(); info.si_signo = 0; set_fs (KERNEL_DS); ret = sys_waitid(which, pid, (siginfo_t __user *) &info, options, uru ? (struct rusage __user *) &ru : NULL); set_fs (old_fs); if (ret < 0 || info.si_signo == 0) return ret; if (uru && (ret = put_compat_rusage(&ru, uru))) return ret; BUG_ON(info.si_code & __SI_MASK); info.si_code |= __SI_CHLD; return copy_siginfo_to_user32(uinfo, &info); } Loading
arch/mips/kernel/linux32.c +22 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,28 @@ sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, int options) return compat_sys_wait4(pid, stat_addr, options, NULL); } asmlinkage long sysn32_waitid(int which, compat_pid_t pid, siginfo_t __user *uinfo, int options, struct compat_rusage __user *uru) { struct rusage ru; long ret; mm_segment_t old_fs = get_fs(); set_fs (KERNEL_DS); ret = sys_waitid(which, pid, uinfo, options, uru ? (struct rusage __user *) &ru : NULL); set_fs (old_fs); if (ret < 0 || uinfo->si_signo == 0) return ret; if (uru) ret = put_compat_rusage(&ru, uru); return ret; } struct sysinfo32 { s32 uptime; u32 loads[3]; Loading
arch/mips/kernel/scall64-n32.S +1 −1 Original line number Diff line number Diff line Loading @@ -358,7 +358,7 @@ EXPORT(sysn32_call_table) PTR compat_sys_mq_notify PTR compat_sys_mq_getsetattr PTR sys_ni_syscall /* 6240, sys_vserver */ PTR sys_waitid PTR sysn32_waitid PTR sys_ni_syscall /* available, was setaltroot */ PTR sys_add_key PTR sys_request_key Loading
arch/mips/kernel/scall64-o32.S +1 −1 Original line number Diff line number Diff line Loading @@ -480,7 +480,7 @@ sys_call_table: PTR compat_sys_mq_notify /* 4275 */ PTR compat_sys_mq_getsetattr PTR sys_ni_syscall /* sys_vserver */ PTR sys_waitid PTR sys32_waitid PTR sys_ni_syscall /* available, was setaltroot */ PTR sys_add_key /* 4280 */ PTR sys_request_key Loading
arch/mips/kernel/signal32.c +27 −0 Original line number Diff line number Diff line Loading @@ -902,3 +902,30 @@ asmlinkage int sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t *uinfo) set_fs (old_fs); return ret; } asmlinkage long sys32_waitid(int which, compat_pid_t pid, compat_siginfo_t __user *uinfo, int options, struct compat_rusage __user *uru) { siginfo_t info; struct rusage ru; long ret; mm_segment_t old_fs = get_fs(); info.si_signo = 0; set_fs (KERNEL_DS); ret = sys_waitid(which, pid, (siginfo_t __user *) &info, options, uru ? (struct rusage __user *) &ru : NULL); set_fs (old_fs); if (ret < 0 || info.si_signo == 0) return ret; if (uru && (ret = put_compat_rusage(&ru, uru))) return ret; BUG_ON(info.si_code & __SI_MASK); info.si_code |= __SI_CHLD; return copy_siginfo_to_user32(uinfo, &info); }