kernel/arch/arm/mm/fault.c
.. .. @@ -439,6 +439,9 @@ 439 439 if (addr < TASK_SIZE) 440 440 return do_page_fault(addr, fsr, regs); 441 441 442 + if (interrupts_enabled(regs))443 + local_irq_enable();444 +442 445 if (user_mode(regs)) 443 446 goto bad_area; 444 447 .. .. @@ -506,6 +509,9 @@ 506 509 static int 507 510 do_sect_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) 508 511 { 512 + if (interrupts_enabled(regs))513 + local_irq_enable();514 +509 515 do_bad_area(addr, fsr, regs); 510 516 return 0; 511 517 }