diff options
Diffstat (limited to 'arch/mips/kernel/scall32-o32.S')
-rw-r--r-- | arch/mips/kernel/scall32-o32.S | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S index 759f68066b5..d0916a55cd7 100644 --- a/arch/mips/kernel/scall32-o32.S +++ b/arch/mips/kernel/scall32-o32.S | |||
@@ -262,14 +262,11 @@ bad_alignment: | |||
262 | LEAF(sys_syscall) | 262 | LEAF(sys_syscall) |
263 | subu t0, a0, __NR_O32_Linux # check syscall number | 263 | subu t0, a0, __NR_O32_Linux # check syscall number |
264 | sltiu v0, t0, __NR_O32_Linux_syscalls + 1 | 264 | sltiu v0, t0, __NR_O32_Linux_syscalls + 1 |
265 | beqz t0, einval # do not recurse | ||
265 | sll t1, t0, 3 | 266 | sll t1, t0, 3 |
266 | beqz v0, einval | 267 | beqz v0, einval |
267 | |||
268 | lw t2, sys_call_table(t1) # syscall routine | 268 | lw t2, sys_call_table(t1) # syscall routine |
269 | 269 | ||
270 | li v1, 4000 - __NR_O32_Linux # index of sys_syscall | ||
271 | beq t0, v1, einval # do not recurse | ||
272 | |||
273 | /* Some syscalls like execve get their arguments from struct pt_regs | 270 | /* Some syscalls like execve get their arguments from struct pt_regs |
274 | and claim zero arguments in the syscall table. Thus we have to | 271 | and claim zero arguments in the syscall table. Thus we have to |
275 | assume the worst case and shuffle around all potential arguments. | 272 | assume the worst case and shuffle around all potential arguments. |
@@ -627,7 +624,7 @@ einval: li v0, -ENOSYS | |||
627 | sys sys_pselect6 6 | 624 | sys sys_pselect6 6 |
628 | sys sys_ppoll 5 | 625 | sys sys_ppoll 5 |
629 | sys sys_unshare 1 | 626 | sys sys_unshare 1 |
630 | sys sys_splice 4 | 627 | sys sys_splice 6 |
631 | sys sys_sync_file_range 7 /* 4305 */ | 628 | sys sys_sync_file_range 7 /* 4305 */ |
632 | sys sys_tee 4 | 629 | sys sys_tee 4 |
633 | sys sys_vmsplice 4 | 630 | sys sys_vmsplice 4 |