Messages in this thread | | | Date | Thu, 17 Sep 2020 16:25:18 +0100 | From | Christoph Hellwig <> | Subject | Re: [PATCH] riscv: fix pfn_to_virt err in do_page_fault(). |
| |
On Thu, Sep 17, 2020 at 03:25:49PM +0800, liush wrote: > 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;
This adds a crazy long line. One nice way to clean this up would be to add a local pfn variable, as it would also make the code more readable.
| |