Re: [PATCH v2 12/32] mm/vmalloc: vmalloc_to_page() use pte_offset_kernel()

From: Hugh Dickins
Date: Tue Jul 11 2023 - 12:13:42 EST


On Tue, 11 Jul 2023, Mark Brown wrote:
> On Mon, Jul 10, 2023 at 09:34:42PM -0700, Hugh Dickins wrote:
>
> > I suppose I should ask you to try reverting this 0d1c81edc61e alone
> > from 6.5-rc1: the consistency of your bisection implies that it will
> > "fix" the issues, and it is a commit which we could drop. It makes
> > me a little nervous, applying userspace-pagetable validation to kernel
> > pagetables, so I don't want to drop it; and it would really be cargo-
> > culting to drop it without understanding. But we could drop it.
>
> I did look at that, it doesn't revert cleanly by itself. ...

Right, that ptep_get() wrapper on the next line came in on top.
The patch to revert just 0d1c81edc61e is this:

--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -703,10 +703,11 @@ struct page *vmalloc_to_page(const void
if (WARN_ON_ONCE(pmd_bad(*pmd)))
return NULL;

- ptep = pte_offset_kernel(pmd, addr);
+ ptep = pte_offset_map(pmd, addr);
pte = ptep_get(ptep);
if (pte_present(pte))
page = pte_page(pte);
+ pte_unmap(ptep);

return page;
}