diff options
Diffstat (limited to 'arch/x86/mm/fault.c')
-rw-r--r-- | arch/x86/mm/fault.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index f62777940dfb..60a0aa574dc6 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
@@ -554,6 +554,7 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address) | |||
554 | nr = (address - idt_descr.address) >> 3; | 554 | nr = (address - idt_descr.address) >> 3; |
555 | 555 | ||
556 | if (nr == 6) { | 556 | if (nr == 6) { |
557 | zap_rt_locks(); | ||
557 | do_invalid_op(regs, 0); | 558 | do_invalid_op(regs, 0); |
558 | return 1; | 559 | return 1; |
559 | } | 560 | } |
@@ -1035,7 +1036,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code) | |||
1035 | * If we're in an interrupt, have no user context or are running | 1036 | * If we're in an interrupt, have no user context or are running |
1036 | * in an atomic region then we must not take the fault: | 1037 | * in an atomic region then we must not take the fault: |
1037 | */ | 1038 | */ |
1038 | if (unlikely(in_atomic() || !mm)) { | 1039 | if (unlikely(in_atomic() || !mm || current->pagefault_disabled)) { |
1039 | bad_area_nosemaphore(regs, error_code, address); | 1040 | bad_area_nosemaphore(regs, error_code, address); |
1040 | return; | 1041 | return; |
1041 | } | 1042 | } |