X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=mm%2Fpage_isolation.c;h=5e0ffd967452083c8209dfa0a1334416ded99f68;hb=03fb3d2af96c2783c3a5bc03f3d984cf422f0e69;hp=b70a7fec1ff6c3a4aa2c210215185b31085c8f4d;hpb=6c1b7f680dd4f550fa6f91f148cc6fa2c4bd0737;p=safe%2Fjmp%2Flinux-2.6 diff --git a/mm/page_isolation.c b/mm/page_isolation.c index b70a7fe..5e0ffd9 100644 --- a/mm/page_isolation.c +++ b/mm/page_isolation.c @@ -130,10 +130,11 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn) if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE) break; } - if (pfn < end_pfn) + page = __first_valid_page(start_pfn, end_pfn - start_pfn); + if ((pfn < end_pfn) || !page) return -EBUSY; /* Check all pages are free or Marked as ISOLATED */ - zone = page_zone(pfn_to_page(pfn)); + zone = page_zone(page); spin_lock_irqsave(&zone->lock, flags); ret = __test_page_isolated_in_pageblock(start_pfn, end_pfn); spin_unlock_irqrestore(&zone->lock, flags);