2017-12-08 0:40 GMT+08:00 Al Viro <viro@xxxxxxxxxxxxxxxxxx>: > On Mon, Nov 27, 2017 at 08:27:53PM +0800, Greentime Hu wrote: >> +void do_page_fault(unsigned long entry, unsigned long addr, >> + unsigned int error_code, struct pt_regs *regs) > [snip] >> + /* >> + * If we're in an interrupt or have no user >> + * context, we must not take the fault.. >> + */ >> + if (unlikely(in_atomic() || !mm)) > > Broken. in_atomic() is wrong here - it should be faulthandler_disabled(). Thanks. I will include <linux/uaccess.h> and replace in_atomic() with faulthandler_disabled() I will fix it in the next version patch.