]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/mips/kernel/scall64-o32.S
MIPS: Fix potential DOS by untrusted user app.
[linux-2.6-omap-h63xx.git] / arch / mips / kernel / scall64-o32.S
index 6c7ef8313ebd702dde4997d225f06189fdb560a0..facb41a76d1bc9700e362655a72833cf094ab4ec 100644 (file)
@@ -174,14 +174,12 @@ not_o32_scall:
        END(handle_sys)
 
 LEAF(sys32_syscall)
-       sltu    v0, a0, __NR_O32_Linux + __NR_O32_Linux_syscalls + 1
+       subu    t0, a0, __NR_O32_Linux  # check syscall number
+       sltiu   v0, t0, __NR_O32_Linux_syscalls + 1
+       beqz    t0, einval              # do not recurse
+       dsll    t1, t0, 3
        beqz    v0, einval
-
-       dsll    v0, a0, 3
-       ld      t2, (sys_call_table - (__NR_O32_Linux * 8))(v0)
-
-       li      v1, 4000                # indirect syscall number
-       beq     a0, v1, einval          # do not recurse
+       ld      t2, sys_call_table(t1)          # syscall routine
 
        move    a0, a1                  # shift argument registers
        move    a1, a2