aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2011-07-12 03:58:06 -0400
committerH. Peter Anvin <hpa@linux.intel.com>2011-07-13 19:35:56 -0400
commit53348f27168534561c0c814843bbf181314374f4 (patch)
tree619f7945ecb15317dd211c68267eb6603295521f /mm/page_alloc.c
parentbf61549a2d8e0326f5d6e4d1718883a7212d725f (diff)
bootmem: Fix __free_pages_bootmem() to use @order properly
a226f6c899 (FRV: Clean up bootmem allocator's page freeing algorithm) separated out __free_pages_bootmem() from free_all_bootmem_core(). __free_pages_bootmem() takes @order argument but it assumes @order is either 0 or ilog2(BITS_PER_LONG). Note that all the current users match that assumption and this doesn't cause actual problems. Fix it by using 1 << order instead of BITS_PER_LONG. Signed-off-by: Tejun Heo <tj@kernel.org> Link: http://lkml.kernel.org/r/1310457490-3356-3-git-send-email-tj@kernel.org Cc: David Howells <dhowells@redhat.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 9119faae6e6a..b6da6ed818a8 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -705,10 +705,10 @@ void __meminit __free_pages_bootmem(struct page *page, unsigned int order)
705 int loop; 705 int loop;
706 706
707 prefetchw(page); 707 prefetchw(page);
708 for (loop = 0; loop < BITS_PER_LONG; loop++) { 708 for (loop = 0; loop < (1 << order); loop++) {
709 struct page *p = &page[loop]; 709 struct page *p = &page[loop];
710 710
711 if (loop + 1 < BITS_PER_LONG) 711 if (loop + 1 < (1 << order))
712 prefetchw(p + 1); 712 prefetchw(p + 1);
713 __ClearPageReserved(p); 713 __ClearPageReserved(p);
714 set_page_count(p, 0); 714 set_page_count(p, 0);