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 <minchan@google.com>
Change-Id: I9b4124393ee432c7cb29cd12d160ecf2a1e34360
This commit is contained in:
Minchan Kim
2021-07-08 11:12:59 -07:00
parent 470cce5085
commit d012783a86

View File

@@ -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);