diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-02-21 02:32:19 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-02-21 02:32:19 -0500 |
commit | 3f60db4bde17088feed5f143582d7661cdbb9a01 (patch) | |
tree | 21a7866ae6d199cfa8f619ced9500687bdf84f18 /mm/page_alloc.c | |
parent | 5e36097889725dbe4f098c3f1e93cb2f21cae6ee (diff) | |
parent | b01543dfe67bb1d191998e90d20534dc354de059 (diff) |
Merge commit 'v3.3-rc4'
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 0027d8f4a1bb..d2186ecb36f7 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -5413,7 +5413,25 @@ __count_immobile_pages(struct zone *zone, struct page *page, int count) | |||
5413 | 5413 | ||
5414 | bool is_pageblock_removable_nolock(struct page *page) | 5414 | bool is_pageblock_removable_nolock(struct page *page) |
5415 | { | 5415 | { |
5416 | struct zone *zone = page_zone(page); | 5416 | struct zone *zone; |
5417 | unsigned long pfn; | ||
5418 | |||
5419 | /* | ||
5420 | * We have to be careful here because we are iterating over memory | ||
5421 | * sections which are not zone aware so we might end up outside of | ||
5422 | * the zone but still within the section. | ||
5423 | * We have to take care about the node as well. If the node is offline | ||
5424 | * its NODE_DATA will be NULL - see page_zone. | ||
5425 | */ | ||
5426 | if (!node_online(page_to_nid(page))) | ||
5427 | return false; | ||
5428 | |||
5429 | zone = page_zone(page); | ||
5430 | pfn = page_to_pfn(page); | ||
5431 | if (zone->zone_start_pfn > pfn || | ||
5432 | zone->zone_start_pfn + zone->spanned_pages <= pfn) | ||
5433 | return false; | ||
5434 | |||
5417 | return __count_immobile_pages(zone, page, 0); | 5435 | return __count_immobile_pages(zone, page, 0); |
5418 | } | 5436 | } |
5419 | 5437 | ||