summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2006-02-19 03:42:11 +0000
committerRalf Baechle <ralf@linux-mips.org>2006-02-21 16:58:23 +0000
commitf3468e0c34c8de919062582575a01e2434c8e727 (patch)
treecb21a54f7b04e1408ea23016066c4c55aa3620cd /arch
parent82ad93f4a002294820e9a5e6f84beef2222a54b7 (diff)
downloadlinux-stable-f3468e0c34c8de919062582575a01e2434c8e727.tar.gz
linux-stable-f3468e0c34c8de919062582575a01e2434c8e727.tar.bz2
linux-stable-f3468e0c34c8de919062582575a01e2434c8e727.zip
[MIPS] N32: Make sure pointer is good before passing it to sys_waitid().
After all we're calling sys_waitid() with fs set to KERNEL_DS ... Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/kernel/linux32.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index 9996b6e84585..5f68b220c26d 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -230,6 +230,9 @@ sysn32_waitid(int which, compat_pid_t pid,
long ret;
mm_segment_t old_fs = get_fs();
+ if (!access_ok(VERIFY_WRITE, uinfo, sizeof(*uinfo)))
+ return -EFAULT;
+
set_fs (KERNEL_DS);
ret = sys_waitid(which, pid, uinfo, options,
uru ? (struct rusage __user *) &ru : NULL);