From c0dd1cbc6f2b763b7f1016af9a9ce67d0ba891c8 Mon Sep 17 00:00:00 2001 From: Konstantin Khlebnikov Date: Tue, 24 May 2011 17:12:19 -0700 Subject: [PATCH] --- yaml --- r: 250906 b: refs/heads/master c: 700c2a46e88265326764197d5b8842490bae5569 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/memory_hotplug.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 2fae5e4556c3..b13f213744dc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 22943ab116af1ead4dc112ec408a93cf1365b34a +refs/heads/master: 700c2a46e88265326764197d5b8842490bae5569 diff --git a/trunk/mm/memory_hotplug.c b/trunk/mm/memory_hotplug.c index 59ac18fefd65..89b0391f14a8 100644 --- a/trunk/mm/memory_hotplug.c +++ b/trunk/mm/memory_hotplug.c @@ -706,7 +706,7 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) if (!pfn_valid(pfn)) continue; page = pfn_to_page(pfn); - if (!page_count(page)) + if (!get_page_unless_zero(page)) continue; /* * We can skip free pages. And we can only deal with pages on @@ -714,6 +714,7 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) */ ret = isolate_lru_page(page); if (!ret) { /* Success */ + put_page(page); list_add_tail(&page->lru, &source); move_pages--; inc_zone_page_state(page, NR_ISOLATED_ANON + @@ -725,6 +726,7 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) pfn); dump_page(page); #endif + put_page(page); /* Because we don't have big zone->lock. we should check this again here. */ if (page_count(page)) {