@@ -55,10 +55,6 @@ asmlinkage void do_page_fault(struct pt_regs *regs)
if (unlikely((addr >= VMALLOC_START) && (addr <= VMALLOC_END)))
goto vmalloc_fault;
- /* Enable interrupts if they were enabled in the parent context. */
- if (likely(regs->status & SR_PIE))
- local_irq_enable();
-
/*
* If we're in an interrupt, have no user context, or are running
* in an atomic region, then we must not take the fault.
@@ -71,6 +67,8 @@ asmlinkage void do_page_fault(struct pt_regs *regs)
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr);
+ /* Enable interrupts for user context. */
+ local_irq_enable();
retry:
mmap_read_lock(mm);
vma = find_vma(mm, addr);