Re: [PATCH v6 03/23] mm: Check against orig_pte for finish_fault()

From: Peter Xu
Date: Thu Dec 16 2021 - 03:04:24 EST


On Thu, Dec 16, 2021 at 06:45:07PM +1100, Alistair Popple wrote:
> On Thursday, 16 December 2021 6:06:54 PM AEDT Peter Xu wrote:
>
> [...]
>
> > I wondered how it could have worked - I thought e.g. pte_alloc_one() will
> > always return a pgtable page will all zero-filled, whose allocation should
> > require __GFP_ZERO anyway. But then I quickly noticed that pte_alloc_one() is
> > per-arch too.. That explains, because per-arch can re-initialize the default
> > pte values.
>
> Yes, I have wondered the same things before as well. It's all a little bit of
> fun some of this stuff.
>
> > I thought this patch can greatly simplify things but I overlooked the
> > pte_none() check you mentioned. So it seems I have no good choice but add that
> > flag back.
> >
> > There's another alternative is we do pte_clear() on vmf->orig_pte as the new
> > way to initialize it. I believe it should work too for s390 and xtensa.
> >
> > Any preference?
>
> I prefer the later approach (initialising to pte_clear) as it seems cleaner,
> and pte_none(pte_clear()) is true for every architecture afaik.

Will do.

--
Peter Xu