On Thu, 2011-09-08 at 20:09 -0500, Richard Kuo wrote: > +/* > + * Canonical page fault handler > + */ > +void do_page_fault(unsigned long address, long cause, struct pt_regs *regs) > +{ > + struct vm_area_struct *vma; > + struct mm_struct *mm = current->mm; > + siginfo_t info; > + int si_code; > + int fault; > + const struct exception_table_entry *fixup; > + > + si_code = SEGV_MAPERR; > + local_irq_enable(); > + > + /* > + * If we're in an interrupt or have no user context, > + * then must not take the fault. > + */ > + if (unlikely(in_interrupt() || !mm)) > + goto no_context; Are you sure about enabling interrupts before going to "no_context" ? If somebody does a user access "in atomic" with interrupt disabled (with the expectation that a fault would be caught by search_exception_tables and returned as -EFAULT), such code probably doesn't expect interrupts to be re-enabled implicitely. Cheers, Ben. -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html