]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mm: fix page_group_by_mobility_disabled breakage
authorKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Tue, 5 Nov 2013 05:55:54 +0000 (16:55 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 5 Nov 2013 05:55:54 +0000 (16:55 +1100)
Currently, set_pageblock_migratetype() screws up MIGRATE_CMA and
MIGRATE_ISOLATE if page_group_by_mobility_disabled is true.  It rewrites
the argument to MIGRATE_UNMOVABLE and we lost these attribute.

The problem was introduced by 49255c619f ("page allocator: move check for
disabled anti-fragmentation out of fastpath").  So a 4 year old issue may
mean that nobody uses page_group_by_mobility_disabled.

But anyway, this patch fixes the problem.

Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Acked-by: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/page_alloc.c

index c7a2b7cba389ea70905d166265edfbd867d6c35d..24680e9cc739a8716a62d81bee487591d6155496 100644 (file)
@@ -234,8 +234,8 @@ int page_group_by_mobility_disabled __read_mostly;
 
 void set_pageblock_migratetype(struct page *page, int migratetype)
 {
-
-       if (unlikely(page_group_by_mobility_disabled))
+       if (unlikely(page_group_by_mobility_disabled &&
+                    migratetype < MIGRATE_PCPTYPES))
                migratetype = MIGRATE_UNMOVABLE;
 
        set_pageblock_flags_group(page, (unsigned long)migratetype,