Messages in this thread | | | Date | Mon, 7 Jan 2013 14:31:28 -0800 | From | Andrew Morton <> | Subject | Re: [RESEND][PATCH v3] mm: Use aligned zone start for pfn_to_bitidx calculation |
| |
On Sat, 5 Jan 2013 11:28:31 -0800 Laura Abbott <lauraa@codeaurora.org> wrote:
> The current calculation in pfn_to_bitidx assumes that > (pfn - zone->zone_start_pfn) >> pageblock_order will return the > same bit for all pfn in a pageblock. If zone_start_pfn is not > aligned to pageblock_nr_pages, this may not always be correct. > > Consider the following with pageblock order = 10, zone start 2MB: > > pfn | pfn - zone start | (pfn - zone start) >> page block order > ---------------------------------------------------------------- > 0x26000 | 0x25e00 | 0x97 > 0x26100 | 0x25f00 | 0x97 > 0x26200 | 0x26000 | 0x98 > 0x26300 | 0x26100 | 0x98 > > This means that calling {get,set}_pageblock_migratetype on a single > page will not set the migratetype for the full block. Fix this by > rounding down zone_start_pfn when doing the bitidx calculation.
What are the user-visible effects of this bug?
| |