Re: [PATCH v2 1/2] mm/damon: validate if the pmd entry is present before accessing

From: Muchun Song
Date: Thu Aug 18 2022 - 04:28:24 EST




> On Aug 18, 2022, at 15:37, Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx> wrote:
>
> The pmd_huge() is used to validate if the pmd entry is mapped by a huge
> page, also including the case of non-present (migration or hwpoisoned)
> pmd entry on arm64 or x86 architectures. That means the pmd_pfn() can
> not get the correct pfn number for the non-present pmd entry, which
> will cause damon_get_page() to get an incorrect page struct (also
> may be NULL by pfn_to_online_page()) to make the access statistics
> incorrect.
>
> Moreover it does not make sense that we still waste time to get the
> page of the non-present entry, just treat it as not-accessed and skip it,
> that keeps consistent with non-present pte level entry.
>
> Thus adding a pmd entry present validation to fix above issues.
>
> Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
> Reviewed-by: SeongJae Park <sj@xxxxxxxxxx>

Reviewed-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>

Thanks.