Loading arch/x86/kernel/entry_64.S +11 −12 Original line number Diff line number Diff line Loading @@ -244,6 +244,7 @@ ret_from_sys_call: movl $_TIF_ALLWORK_MASK,%edi /* edi: flagmask */ sysret_check: LOCKDEP_SYS_EXIT GET_THREAD_INFO(%rcx) cli TRACE_IRQS_OFF Loading Loading @@ -333,6 +334,7 @@ int_ret_from_sys_call: movl $_TIF_ALLWORK_MASK,%edi /* edi: mask to check */ int_with_check: LOCKDEP_SYS_EXIT_IRQ GET_THREAD_INFO(%rcx) movl threadinfo_flags(%rcx),%edx andl %edi,%edx Loading Loading @@ -544,11 +546,13 @@ exit_intr: retint_with_reschedule: movl $_TIF_WORK_MASK,%edi retint_check: LOCKDEP_SYS_EXIT_IRQ movl threadinfo_flags(%rcx),%edx andl %edi,%edx CFI_REMEMBER_STATE jnz retint_careful retint_swapgs: retint_swapgs: /* return to user-space */ /* * The iretq could re-enable interrupts: */ Loading @@ -557,7 +561,7 @@ retint_swapgs: swapgs jmp restore_args retint_restore_args: retint_restore_args: /* return to kernel space */ cli /* * The iretq could re-enable interrupts: Loading Loading @@ -875,17 +879,12 @@ error_exit: GET_THREAD_INFO(%rcx) testl %eax,%eax jne retint_kernel LOCKDEP_SYS_EXIT_IRQ movl threadinfo_flags(%rcx),%edx movl $_TIF_WORK_MASK,%edi andl %edi,%edx jnz retint_careful /* * The iret might restore flags: */ TRACE_IRQS_IRETQ swapgs RESTORE_ARGS 0,8,0 jmp iret_label jmp retint_swapgs CFI_ENDPROC error_kernelspace: Loading arch/x86/lib/thunk_64.S +4 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,10 @@ 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 SAVE_ARGS Loading include/asm-x86/irqflags_64.h +14 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,20 @@ 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_IRQ \ TRACE_IRQS_ON; \ sti; \ SAVE_REST; \ LOCKDEP_SYS_EXIT; \ RESTORE_REST; \ cli; \ TRACE_IRQS_OFF; # else # define LOCKDEP_SYS_EXIT # define LOCKDEP_SYS_EXIT_IRQ # endif #endif #endif Loading
arch/x86/kernel/entry_64.S +11 −12 Original line number Diff line number Diff line Loading @@ -244,6 +244,7 @@ ret_from_sys_call: movl $_TIF_ALLWORK_MASK,%edi /* edi: flagmask */ sysret_check: LOCKDEP_SYS_EXIT GET_THREAD_INFO(%rcx) cli TRACE_IRQS_OFF Loading Loading @@ -333,6 +334,7 @@ int_ret_from_sys_call: movl $_TIF_ALLWORK_MASK,%edi /* edi: mask to check */ int_with_check: LOCKDEP_SYS_EXIT_IRQ GET_THREAD_INFO(%rcx) movl threadinfo_flags(%rcx),%edx andl %edi,%edx Loading Loading @@ -544,11 +546,13 @@ exit_intr: retint_with_reschedule: movl $_TIF_WORK_MASK,%edi retint_check: LOCKDEP_SYS_EXIT_IRQ movl threadinfo_flags(%rcx),%edx andl %edi,%edx CFI_REMEMBER_STATE jnz retint_careful retint_swapgs: retint_swapgs: /* return to user-space */ /* * The iretq could re-enable interrupts: */ Loading @@ -557,7 +561,7 @@ retint_swapgs: swapgs jmp restore_args retint_restore_args: retint_restore_args: /* return to kernel space */ cli /* * The iretq could re-enable interrupts: Loading Loading @@ -875,17 +879,12 @@ error_exit: GET_THREAD_INFO(%rcx) testl %eax,%eax jne retint_kernel LOCKDEP_SYS_EXIT_IRQ movl threadinfo_flags(%rcx),%edx movl $_TIF_WORK_MASK,%edi andl %edi,%edx jnz retint_careful /* * The iret might restore flags: */ TRACE_IRQS_IRETQ swapgs RESTORE_ARGS 0,8,0 jmp iret_label jmp retint_swapgs CFI_ENDPROC error_kernelspace: Loading
arch/x86/lib/thunk_64.S +4 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,10 @@ 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 SAVE_ARGS Loading
include/asm-x86/irqflags_64.h +14 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,20 @@ 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_IRQ \ TRACE_IRQS_ON; \ sti; \ SAVE_REST; \ LOCKDEP_SYS_EXIT; \ RESTORE_REST; \ cli; \ TRACE_IRQS_OFF; # else # define LOCKDEP_SYS_EXIT # define LOCKDEP_SYS_EXIT_IRQ # endif #endif #endif