Run the lockdep_sys_exit hook after all other C code on the syscall return path. Signed-off-by: Peter Zijlstra --- arch/x86_64/kernel/entry.S | 3 +++ arch/x86_64/lib/thunk.S | 4 ++++ include/asm-x86_64/irqflags.h | 9 +++++++++ 3 files changed, 16 insertions(+) Index: linux-2.6/arch/x86_64/kernel/entry.S =================================================================== --- linux-2.6.orig/arch/x86_64/kernel/entry.S +++ linux-2.6/arch/x86_64/kernel/entry.S @@ -164,6 +164,7 @@ ENTRY(ret_from_fork) testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),threadinfo_flags(%rcx) jnz rff_trace rff_action: + LOCKDEP_SYS_EXIT RESTORE_REST testl $3,CS-ARGOFFSET(%rsp) # from kernel_thread? je int_ret_from_sys_call @@ -326,6 +327,7 @@ tracesys: */ .globl int_ret_from_sys_call int_ret_from_sys_call: + LOCKDEP_SYS_EXIT_REST cli TRACE_IRQS_OFF testl $3,CS-ARGOFFSET(%rsp) @@ -382,6 +384,7 @@ int_signal: call do_notify_resume 1: movl $_TIF_NEED_RESCHED,%edi int_restore_rest: + LOCKDEP_SYS_EXIT RESTORE_REST cli TRACE_IRQS_OFF Index: linux-2.6/arch/x86_64/lib/thunk.S =================================================================== --- linux-2.6.orig/arch/x86_64/lib/thunk.S +++ linux-2.6/arch/x86_64/lib/thunk.S @@ -50,6 +50,10 @@ thunk trace_hardirqs_on_thunk,trace_hardirqs_on thunk trace_hardirqs_off_thunk,trace_hardirqs_off #endif + +#ifdef CONFIG_DEBUG_LOCK_ALLOC + thunk lockdep_sys_exit_thunk,lockdep_sys_exit +#endif /* SAVE_ARGS below is used only for the .cfi directives it contains. */ CFI_STARTPROC Index: linux-2.6/include/asm-x86_64/irqflags.h =================================================================== --- linux-2.6.orig/include/asm-x86_64/irqflags.h +++ linux-2.6/include/asm-x86_64/irqflags.h @@ -137,6 +137,15 @@ static inline void halt(void) # define TRACE_IRQS_ON # define TRACE_IRQS_OFF # endif +# ifdef CONFIG_DEBUG_LOCK_ALLOC +# define LOCKDEP_SYS_EXIT call lockdep_sys_exit_thunk +# define LOCKDEP_SYS_EXIT_REST SAVE_REST; \ + LOCKDEP_SYS_EXIT; \ + RESTORE_REST; +# else +# define LOCKDEP_SYS_EXIT +# define LOCKDEP_SYS_EXIT_REST +# endif #endif #endif -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/