Messages in this thread Patch in this message | | | Date | Thu, 14 Jul 2011 03:38:08 GMT | From | tip-bot for Tejun Heo <> | Subject | [tip:x86/memblock] bootmem: Fix __free_pages_bootmem() to use @order properly |
| |
Commit-ID: 53348f27168534561c0c814843bbf181314374f4 Gitweb: http://git.kernel.org/tip/53348f27168534561c0c814843bbf181314374f4 Author: Tejun Heo <tj@kernel.org> AuthorDate: Tue, 12 Jul 2011 09:58:06 +0200 Committer: H. Peter Anvin <hpa@linux.intel.com> CommitDate: Wed, 13 Jul 2011 16:35:56 -0700
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> --- mm/page_alloc.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 9119faa..b6da6ed 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) int loop; prefetchw(page); - for (loop = 0; loop < BITS_PER_LONG; loop++) { + for (loop = 0; loop < (1 << order); loop++) { struct page *p = &page[loop]; - if (loop + 1 < BITS_PER_LONG) + if (loop + 1 < (1 << order)) prefetchw(p + 1); __ClearPageReserved(p); set_page_count(p, 0);
| |