All DAMON physical- and virtual-address operations obtain their folios through damon_get_folio(). That helper already excludes ZONE_DEVICE memory implicitly via pfn_to_online_page() and folio_test_lru(), but this is inconsistent with other callers in mm/ which test explicitly. Add an explicit folio_is_zone_device() rejection in damon_get_folio() so the guarantee lives in one place and covers every caller uniformly, consistent with other mm walkers that reject zone device folios. Signed-off-by: Gregory Price (Meta) --- mm/damon/ops-common.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c index d7d7f100389b..d8bca7355b4f 100644 --- a/mm/damon/ops-common.c +++ b/mm/damon/ops-common.c @@ -32,7 +32,8 @@ struct folio *damon_get_folio(unsigned long pfn) folio = page_folio(page); if (!folio_try_get(folio)) return NULL; - if (unlikely(page_folio(page) != folio) || !folio_test_lru(folio)) { + if (unlikely(page_folio(page) != folio) || !folio_test_lru(folio) || + folio_is_zone_device(folio)) { folio_put(folio); folio = NULL; } -- 2.55.0