Messages in this thread Patch in this message | | | From | liush <> | Subject | [PATCH] riscv: fix pfn_to_virt err in do_page_fault(). | Date | Thu, 17 Sep 2020 15:25:49 +0800 |
| |
The argument to pfn_to_virt() should be pfn not the value of CSR_SATP.
Signed-off-by: liush <liush@allwinnertech.com> --- arch/riscv/mm/fault.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index 716d64e..9b4e088 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -212,7 +212,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) * of a task switch. */ index = pgd_index(addr); - pgd = (pgd_t *)pfn_to_virt(csr_read(CSR_SATP)) + index; + pgd = (pgd_t *)pfn_to_virt(csr_read(CSR_SATP) & SATP_PPN) + index; pgd_k = init_mm.pgd + index; if (!pgd_present(*pgd_k)) -- 2.7.4
| |