Messages in this thread | | | Date | Mon, 26 Nov 2012 07:06:53 -0800 | From | Dave Hansen <> | Subject | Re: [PATCH] mm: compaction: Fix return value of capture_free_page |
| |
On 11/26/2012 03:23 AM, Mel Gorman wrote: > On Wed, Nov 21, 2012 at 02:21:51PM -0500, Dave Hansen wrote: >> >> This needs to make it in before 3.7 is released. >> > > This is also required. Dave, can you double check? The surprise is that > this does not blow up very obviously. ... > @@ -1422,7 +1422,7 @@ int capture_free_page(struct page *page, int alloc_order, int migratetype) > } > } > > - return 1UL << order; > + return 1UL << alloc_order; > }
compact_capture_page() only looks at the boolean return value out of capture_free_page(), so it wouldn't notice. split_free_page() does. But, when it calls capture_free_page(), order==alloc_order, so it wouldn't make a difference. So, there's probably no actual bug here, but it's certainly a wrong return value.
We should probably also fix the set_pageblock_migratetype() loop in there while we're at it. I think it's potentially trampling on the migration type of pages currently in the allocator. I _think_ that completes the list of things that need to get audited in there.
| |