diff --git a/mm/page_alloc.c b/mm/page_alloc.c index ff0b14b0e8d7e76c3100b0f1b4902da704b69e1e..b9f9b51e0342aee473861dad8c27b549a961482d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -8234,6 +8234,7 @@ struct page *has_unmovable_pages(struct zone *zone, struct page *page, { unsigned long iter = 0; unsigned long pfn = page_to_pfn(page); + unsigned long offset = pfn % pageblock_nr_pages; if (is_migrate_cma_page(page)) { /* @@ -8247,7 +8248,7 @@ struct page *has_unmovable_pages(struct zone *zone, struct page *page, return page; } - for (; iter < pageblock_nr_pages; iter++) { + for (; iter < pageblock_nr_pages - offset; iter++) { if (!pfn_valid_within(pfn + iter)) continue;