MIPS: Compat: Zero upper 32-bit of offset_high and offset_low.
authorRalf Baechle <ralf@linux-mips.org>
Sat, 28 Mar 2009 00:36:09 +0000 (01:36 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 30 Mar 2009 12:49:40 +0000 (14:49 +0200)
Through sys_llseek() arguably should do exactly that it doesn't which
means llseek(2) will fail for o32 processes if offset_low has bit 31 set.

As suggested by Heiko Carstens.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/linux32.c

index 2a47271..6242bc6 100644 (file)
@@ -133,9 +133,9 @@ SYSCALL_DEFINE4(32_ftruncate64, unsigned long, fd, unsigned long, __dummy,
        return sys_ftruncate(fd, merge_64(a2, a3));
 }
 
-SYSCALL_DEFINE5(32_llseek, unsigned long, fd, unsigned long, offset_high,
-       unsigned long, offset_low, loff_t __user *, result,
-       unsigned long, origin)
+SYSCALL_DEFINE5(32_llseek, unsigned int, fd, unsigned int, offset_high,
+               unsigned int, offset_low, loff_t __user *, result,
+               unsigned int, origin)
 {
        return sys_llseek(fd, offset_high, offset_low, result, origin);
 }