From 431314c23b8a7c22be5c689f3290fed02bb6a47c Mon Sep 17 00:00:00 2001 From: Gerald Schaefer Date: Thu, 2 Oct 2008 14:50:16 -0700 Subject: [PATCH] --- yaml --- r: 110133 b: refs/heads/master c: 6c1b7f680dd4f550fa6f91f148cc6fa2c4bd0737 h: refs/heads/master i: 110131: c911885b8ad82bdb923f540e334f3fca9db496dc v: v3 --- [refs] | 2 +- trunk/mm/page_isolation.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 8e93154994f9..1550c6a0fc3d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: aa94fbd5ccd840c8ab26d02439ec799b03a72547 +refs/heads/master: 6c1b7f680dd4f550fa6f91f148cc6fa2c4bd0737 diff --git a/trunk/mm/page_isolation.c b/trunk/mm/page_isolation.c index c69f84fe038d..b70a7fec1ff6 100644 --- a/trunk/mm/page_isolation.c +++ b/trunk/mm/page_isolation.c @@ -114,8 +114,10 @@ __test_page_isolated_in_pageblock(unsigned long pfn, unsigned long end_pfn) int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn) { - unsigned long pfn; + unsigned long pfn, flags; struct page *page; + struct zone *zone; + int ret; pfn = start_pfn; /* @@ -131,7 +133,9 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn) if (pfn < end_pfn) return -EBUSY; /* Check all pages are free or Marked as ISOLATED */ - if (__test_page_isolated_in_pageblock(start_pfn, end_pfn)) - return 0; - return -EBUSY; + zone = page_zone(pfn_to_page(pfn)); + spin_lock_irqsave(&zone->lock, flags); + ret = __test_page_isolated_in_pageblock(start_pfn, end_pfn); + spin_unlock_irqrestore(&zone->lock, flags); + return ret ? 0 : -EBUSY; }