diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2007-10-25 08:01:10 -0400 |
---|---|---|
committer | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2007-10-25 08:01:10 -0400 |
commit | 143a5d325d35efb1b29dcb8d6031cf27107e183a (patch) | |
tree | def297c7608722df2b5a51e5e6acaacb1aeb1f97 /arch/x86/mm | |
parent | c9927c2bf4f45bb85e8b502ab3fb79ad6483c244 (diff) |
lockdep: fixup irq tracing
Ensure we fixup the IRQ state before we hit any locking code.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mm')
-rw-r--r-- | arch/x86/mm/fault_32.c | 5 | ||||
-rw-r--r-- | arch/x86/mm/fault_64.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/arch/x86/mm/fault_32.c b/arch/x86/mm/fault_32.c index 503dfc05111b..2e542e89a3e2 100644 --- a/arch/x86/mm/fault_32.c +++ b/arch/x86/mm/fault_32.c | |||
@@ -303,6 +303,11 @@ fastcall void __kprobes do_page_fault(struct pt_regs *regs, | |||
303 | int write, si_code; | 303 | int write, si_code; |
304 | int fault; | 304 | int fault; |
305 | 305 | ||
306 | /* | ||
307 | * We can fault from pretty much anywhere, with unknown IRQ state. | ||
308 | */ | ||
309 | trace_hardirqs_fixup(); | ||
310 | |||
306 | /* get the address */ | 311 | /* get the address */ |
307 | address = read_cr2(); | 312 | address = read_cr2(); |
308 | 313 | ||
diff --git a/arch/x86/mm/fault_64.c b/arch/x86/mm/fault_64.c index 644b4f7ece10..0e26230669ca 100644 --- a/arch/x86/mm/fault_64.c +++ b/arch/x86/mm/fault_64.c | |||
@@ -304,6 +304,11 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, | |||
304 | unsigned long flags; | 304 | unsigned long flags; |
305 | siginfo_t info; | 305 | siginfo_t info; |
306 | 306 | ||
307 | /* | ||
308 | * We can fault from pretty much anywhere, with unknown IRQ state. | ||
309 | */ | ||
310 | trace_hardirqs_fixup(); | ||
311 | |||
307 | tsk = current; | 312 | tsk = current; |
308 | mm = tsk->mm; | 313 | mm = tsk->mm; |
309 | prefetchw(&mm->mmap_sem); | 314 | prefetchw(&mm->mmap_sem); |