Merge tag 'pull-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[sfrench/cifs-2.6.git] / arch / riscv / mm / fault.c
index c91d85349d39a3e8c36ba1fd7064e94637402d8e..460f785f6e09cd8fb1441f2fff49288f5256181e 100644 (file)
@@ -267,10 +267,12 @@ asmlinkage void do_page_fault(struct pt_regs *regs)
        if (user_mode(regs))
                flags |= FAULT_FLAG_USER;
 
-       if (!user_mode(regs) && addr < TASK_SIZE &&
-                       unlikely(!(regs->status & SR_SUM)))
-               die_kernel_fault("access to user memory without uaccess routines",
-                               addr, regs);
+       if (!user_mode(regs) && addr < TASK_SIZE && unlikely(!(regs->status & SR_SUM))) {
+               if (fixup_exception(regs))
+                       return;
+
+               die_kernel_fault("access to user memory without uaccess routines", addr, regs);
+       }
 
        perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr);