diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index eaa64d2ffdc5..6cbde310abed 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -873,7 +873,8 @@ done_merging: | |||
873 | higher_page = page + (combined_pfn - pfn); | 873 | higher_page = page + (combined_pfn - pfn); |
874 | buddy_pfn = __find_buddy_pfn(combined_pfn, order + 1); | 874 | buddy_pfn = __find_buddy_pfn(combined_pfn, order + 1); |
875 | higher_buddy = higher_page + (buddy_pfn - combined_pfn); | 875 | higher_buddy = higher_page + (buddy_pfn - combined_pfn); |
876 | if (page_is_buddy(higher_page, higher_buddy, order + 1)) { | 876 | if (pfn_valid_within(buddy_pfn) && |
877 | page_is_buddy(higher_page, higher_buddy, order + 1)) { | ||
877 | list_add_tail(&page->lru, | 878 | list_add_tail(&page->lru, |
878 | &zone->free_area[order].free_list[migratetype]); | 879 | &zone->free_area[order].free_list[migratetype]); |
879 | goto out; | 880 | goto out; |