aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2007-10-11 16:11:12 -0400
committerPeter Zijlstra <a.p.zijlstra@chello.nl>2007-10-11 16:11:12 -0400
commitc7e872e7da5514d014707a407ea562d197cc0136 (patch)
treeeab8cc63a0ef14afbaa9b61153f30f7ed1a94e6f /arch/x86
parentb351d164e860d1ffffdc501c32f55dd1446c385b (diff)
lockdep: i386: connect the sysexit hook
Run the lockdep_sys_exit hook after all other C code on the syscall return path. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kernel/entry_32.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
index 290b7bc82da3..8099fea0a72f 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -251,6 +251,7 @@ check_userspace:
251 jb resume_kernel # not returning to v8086 or userspace 251 jb resume_kernel # not returning to v8086 or userspace
252 252
253ENTRY(resume_userspace) 253ENTRY(resume_userspace)
254 LOCKDEP_SYS_EXIT
254 DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt 255 DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt
255 # setting need_resched or sigpending 256 # setting need_resched or sigpending
256 # between sampling and the iret 257 # between sampling and the iret
@@ -338,6 +339,7 @@ sysenter_past_esp:
338 jae syscall_badsys 339 jae syscall_badsys
339 call *sys_call_table(,%eax,4) 340 call *sys_call_table(,%eax,4)
340 movl %eax,PT_EAX(%esp) 341 movl %eax,PT_EAX(%esp)
342 LOCKDEP_SYS_EXIT
341 DISABLE_INTERRUPTS(CLBR_ANY) 343 DISABLE_INTERRUPTS(CLBR_ANY)
342 TRACE_IRQS_OFF 344 TRACE_IRQS_OFF
343 movl TI_flags(%ebp), %ecx 345 movl TI_flags(%ebp), %ecx
@@ -377,6 +379,7 @@ syscall_call:
377 call *sys_call_table(,%eax,4) 379 call *sys_call_table(,%eax,4)
378 movl %eax,PT_EAX(%esp) # store the return value 380 movl %eax,PT_EAX(%esp) # store the return value
379syscall_exit: 381syscall_exit:
382 LOCKDEP_SYS_EXIT
380 DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt 383 DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt
381 # setting need_resched or sigpending 384 # setting need_resched or sigpending
382 # between sampling and the iret 385 # between sampling and the iret
@@ -467,6 +470,7 @@ work_pending:
467 jz work_notifysig 470 jz work_notifysig
468work_resched: 471work_resched:
469 call schedule 472 call schedule
473 LOCKDEP_SYS_EXIT
470 DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt 474 DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt
471 # setting need_resched or sigpending 475 # setting need_resched or sigpending
472 # between sampling and the iret 476 # between sampling and the iret