Unverified Commit 21855cac authored by Eric Lin's avatar Eric Lin Committed by Palmer Dabbelt
Browse files

riscv/mm: Prevent kernel module to access user memory without uaccess routines



We found this issue in an legacy out-of-tree kernel module
which didn't properly access user space pointer by get/put_user().
Such an illegal access loops in the page fault handler.
To resolve this, let it die here.

Signed-off-by: default avatarEric Lin <tesheng@andestech.com>
Reviewed-by: default avatarPekka Enberg <penberg@kernel.org>
Signed-off-by: default avatarPalmer Dabbelt <palmerdabbelt@google.com>
parent 21733cb5
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -243,6 +243,11 @@ 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);

	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr);

	if (cause == EXC_STORE_PAGE_FAULT)