diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2012-03-21 19:33:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-21 20:54:56 -0400 |
commit | aad6ec3777bf4930d4f7293745cc4c17a2d87947 (patch) | |
tree | 9a2d141e3361e621d5d6f624d4f1b1e075dc9e7d /mm | |
parent | 8575ec29f61da83a2bf382c8c490499dc022101e (diff) |
mm: compaction: make compact_control order signed
"order" is -1 when compacting via /proc/sys/vm/compact_memory. Making
it unsigned causes a bug in __compact_pgdat() when we test:
if (cc->order < 0 || !compaction_deferred(zone, cc->order))
compact_zone(zone, cc);
[akpm@linux-foundation.org: make __compact_pgdat()'s comparison match other code sites]
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Minchan Kim <minchan@kernel.org>
Reviewed-by: Rik van Riel <riel@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/compaction.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/compaction.c b/mm/compaction.c index a08bf219f88c..74a8c825ff28 100644 --- a/mm/compaction.c +++ b/mm/compaction.c | |||
@@ -35,7 +35,7 @@ struct compact_control { | |||
35 | unsigned long migrate_pfn; /* isolate_migratepages search base */ | 35 | unsigned long migrate_pfn; /* isolate_migratepages search base */ |
36 | bool sync; /* Synchronous migration */ | 36 | bool sync; /* Synchronous migration */ |
37 | 37 | ||
38 | unsigned int order; /* order a direct compactor needs */ | 38 | int order; /* order a direct compactor needs */ |
39 | int migratetype; /* MOVABLE, RECLAIMABLE etc */ | 39 | int migratetype; /* MOVABLE, RECLAIMABLE etc */ |
40 | struct zone *zone; | 40 | struct zone *zone; |
41 | }; | 41 | }; |
@@ -692,7 +692,7 @@ static int __compact_pgdat(pg_data_t *pgdat, struct compact_control *cc) | |||
692 | INIT_LIST_HEAD(&cc->freepages); | 692 | INIT_LIST_HEAD(&cc->freepages); |
693 | INIT_LIST_HEAD(&cc->migratepages); | 693 | INIT_LIST_HEAD(&cc->migratepages); |
694 | 694 | ||
695 | if (cc->order < 0 || !compaction_deferred(zone, cc->order)) | 695 | if (cc->order == -1 || !compaction_deferred(zone, cc->order)) |
696 | compact_zone(zone, cc); | 696 | compact_zone(zone, cc); |
697 | 697 | ||
698 | if (cc->order > 0) { | 698 | if (cc->order > 0) { |