From d012783a8612360aed05788c95e763c5009faa74 Mon Sep 17 00:00:00 2001 From: Minchan Kim Date: Thu, 8 Jul 2021 11:12:59 -0700 Subject: [PATCH] ANDROID: mm: page_pinner: reset migration failed page Currently, __reset_page_pinner reset only PAGE_EXT_GET page freeing, not PAGE_EXT_PINNER_MIGRATION_FAILED page. It should handle both cases to prevent wrong PAGE_EXT_PINNER_MIGRATION_FAILED setting. Bug: 192475091 Signed-off-by: Minchan Kim Change-Id: I9b4124393ee432c7cb29cd12d160ecf2a1e34360 --- mm/page_pinner.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/page_pinner.c b/mm/page_pinner.c index c932788bb451..a8ef9af36822 100644 --- a/mm/page_pinner.c +++ b/mm/page_pinner.c @@ -151,7 +151,9 @@ void __reset_page_pinner(struct page *page, unsigned int order, bool free) return; for (i = 0; i < (1 << order); i++) { - if (!test_bit(PAGE_EXT_GET, &page_ext->flags)) + if (!test_bit(PAGE_EXT_GET, &page_ext->flags) && + !test_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, + &page_ext->flags)) continue; page_pinner = get_page_pinner(page_ext);