forked from Minki/linux
mm, page_alloc: Add missing check for memory holes
Commit13ad59df67
("mm, page_alloc: avoid page_to_pfn() when merging buddies") moved the check for memory holes out of page_is_buddy() and had the callers do the check. But this wasn't done correctly in one place which caused ia64 to crash very early in boot. Update to fix that and make ia64 boot again. [ v2: Vlastimil pointed out we don't need to call page_to_pfn() since we already have the result of that in "buddy_pfn" ] Fixes:13ad59df67
("avoid page_to_pfn() when merging buddies") Cc: Mel Gorman <mgorman@techsingularity.net> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
8557b8e43a
commit
b4fb8f66f1
@ -873,7 +873,8 @@ done_merging:
|
||||
higher_page = page + (combined_pfn - pfn);
|
||||
buddy_pfn = __find_buddy_pfn(combined_pfn, order + 1);
|
||||
higher_buddy = higher_page + (buddy_pfn - combined_pfn);
|
||||
if (page_is_buddy(higher_page, higher_buddy, order + 1)) {
|
||||
if (pfn_valid_within(buddy_pfn) &&
|
||||
page_is_buddy(higher_page, higher_buddy, order + 1)) {
|
||||
list_add_tail(&page->lru,
|
||||
&zone->free_area[order].free_list[migratetype]);
|
||||
goto out;
|
||||
|
Loading…
Reference in New Issue
Block a user