aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/i386/kernel/entry.S')
-rw-r--r--arch/i386/kernel/entry.S8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index b389e5f3bdee..9a47723469c6 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -339,12 +339,18 @@ syscall_trace_entry:
339 xorl %edx,%edx 339 xorl %edx,%edx
340 call do_syscall_trace 340 call do_syscall_trace
341 cmpl $0, %eax 341 cmpl $0, %eax
342 jne syscall_exit # ret != 0 -> running under PTRACE_SYSEMU, 342 jne syscall_skip # ret != 0 -> running under PTRACE_SYSEMU,
343 # so must skip actual syscall 343 # so must skip actual syscall
344 movl ORIG_EAX(%esp), %eax 344 movl ORIG_EAX(%esp), %eax
345 cmpl $(nr_syscalls), %eax 345 cmpl $(nr_syscalls), %eax
346 jnae syscall_call 346 jnae syscall_call
347 jmp syscall_exit 347 jmp syscall_exit
348syscall_skip:
349 cli # make sure we don't miss an interrupt
350 # setting need_resched or sigpending
351 # between sampling and the iret
352 movl TI_flags(%ebp), %ecx
353 jmp work_pending
348 354
349 # perform syscall exit tracing 355 # perform syscall exit tracing
350 ALIGN 356 ALIGN