]> Pileus Git - ~andy/linux/blobdiff - arch/arm/kernel/entry-common.S
ARM: 7579/1: arch/allow a scno of -1 to not cause a SIGILL
[~andy/linux] / arch / arm / kernel / entry-common.S
index 417bac1846bdeb71dc475bfe7bee3e729623caa4..ee81dbc6fa1028c912ce927316eaa3fd4d584061 100644 (file)
@@ -417,16 +417,6 @@ local_restart:
        ldr     r10, [tsk, #TI_FLAGS]           @ check for syscall tracing
        stmdb   sp!, {r4, r5}                   @ push fifth and sixth args
 
-#ifdef CONFIG_SECCOMP
-       tst     r10, #_TIF_SECCOMP
-       beq     1f
-       mov     r0, scno
-       bl      __secure_computing      
-       add     r0, sp, #S_R0 + S_OFF           @ pointer to regs
-       ldmia   r0, {r0 - r3}                   @ have to reload r0 - r3
-1:
-#endif
-
        tst     r10, #_TIF_SYSCALL_WORK         @ are we tracing syscalls?
        bne     __sys_trace
 
@@ -458,7 +448,10 @@ __sys_trace:
        ldmccia r1, {r0 - r6}                   @ have to reload r0 - r6
        stmccia sp, {r4, r5}                    @ and update the stack args
        ldrcc   pc, [tbl, scno, lsl #2]         @ call sys_* routine
-       b       2b
+       cmp     scno, #-1                       @ skip the syscall?
+       bne     2b
+       add     sp, sp, #S_OFF                  @ restore stack
+       b       ret_slow_syscall
 
 __sys_trace_return:
        str     r0, [sp, #S_R0 + S_OFF]!        @ save returned r0