diff options
author | 2014-07-07 17:24:10 -0700 | |
---|---|---|
committer | 2014-07-07 17:24:10 -0700 | |
commit | 64c720add08ed48fc7655686c2de6969b043b4c0 (patch) | |
tree | 5c78f45d6089113f7e8f93fad22134646e42b15f /mm/page_alloc.c | |
parent | Merge branch 'component-for-driver' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into driver-core-next (diff) | |
parent | Linux 3.16-rc4 (diff) | |
download | wireguard-linux-64c720add08ed48fc7655686c2de6969b043b4c0.tar.xz wireguard-linux-64c720add08ed48fc7655686c2de6969b043b4c0.zip |
Merge 3.16-rc4 into driver-core-next
We want the lz* fixes here to do more work with them.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to '')
-rw-r--r-- | mm/page_alloc.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 20d17f8266fe..0ea758b898fd 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -816,9 +816,21 @@ void __init init_cma_reserved_pageblock(struct page *page) set_page_count(p, 0); } while (++p, --i); - set_page_refcounted(page); set_pageblock_migratetype(page, MIGRATE_CMA); - __free_pages(page, pageblock_order); + + if (pageblock_order >= MAX_ORDER) { + i = pageblock_nr_pages; + p = page; + do { + set_page_refcounted(p); + __free_pages(p, MAX_ORDER - 1); + p += MAX_ORDER_NR_PAGES; + } while (i -= MAX_ORDER_NR_PAGES); + } else { + set_page_refcounted(page); + __free_pages(page, pageblock_order); + } + adjust_managed_page_count(page, pageblock_nr_pages); } #endif |