diff options
author | Mel Gorman <mel@csn.ul.ie> | 2009-06-16 18:31:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-16 22:47:32 -0400 |
commit | b3c466ce512923298ae8c0121d3e9f397a3f1210 (patch) | |
tree | ca6f360a6dbaaa0a71b9375fb57d544364532254 | |
parent | d239171e4f6efd58d7e423853056b1b6a74f1446 (diff) |
page allocator: do not sanity check order in the fast path
No user of the allocator API should be passing in an order >= MAX_ORDER
but we check for it on each and every allocation. Delete this check and
make it a VM_BUG_ON check further down the call path.
[akpm@linux-foundation.org: s/VM_BUG_ON/WARN_ON_ONCE/]
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Reviewed-by: Christoph Lameter <cl@linux-foundation.org>
Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Dave Hansen <dave@linux.vnet.ibm.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/gfp.h | 6 | ||||
-rw-r--r-- | mm/page_alloc.c | 3 |
2 files changed, 3 insertions, 6 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 549ec5583103..c2d3fe03b5d2 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
@@ -185,9 +185,6 @@ __alloc_pages(gfp_t gfp_mask, unsigned int order, | |||
185 | static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, | 185 | static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, |
186 | unsigned int order) | 186 | unsigned int order) |
187 | { | 187 | { |
188 | if (unlikely(order >= MAX_ORDER)) | ||
189 | return NULL; | ||
190 | |||
191 | /* Unknown node is current node */ | 188 | /* Unknown node is current node */ |
192 | if (nid < 0) | 189 | if (nid < 0) |
193 | nid = numa_node_id(); | 190 | nid = numa_node_id(); |
@@ -201,9 +198,6 @@ extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); | |||
201 | static inline struct page * | 198 | static inline struct page * |
202 | alloc_pages(gfp_t gfp_mask, unsigned int order) | 199 | alloc_pages(gfp_t gfp_mask, unsigned int order) |
203 | { | 200 | { |
204 | if (unlikely(order >= MAX_ORDER)) | ||
205 | return NULL; | ||
206 | |||
207 | return alloc_pages_current(gfp_mask, order); | 201 | return alloc_pages_current(gfp_mask, order); |
208 | } | 202 | } |
209 | extern struct page *alloc_page_vma(gfp_t gfp_mask, | 203 | extern struct page *alloc_page_vma(gfp_t gfp_mask, |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d58df9031503..bfbd95c0610f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -1401,6 +1401,9 @@ get_page_from_freelist(gfp_t gfp_mask, nodemask_t *nodemask, unsigned int order, | |||
1401 | 1401 | ||
1402 | classzone_idx = zone_idx(preferred_zone); | 1402 | classzone_idx = zone_idx(preferred_zone); |
1403 | 1403 | ||
1404 | if (WARN_ON_ONCE(order >= MAX_ORDER)) | ||
1405 | return NULL; | ||
1406 | |||
1404 | zonelist_scan: | 1407 | zonelist_scan: |
1405 | /* | 1408 | /* |
1406 | * Scan zonelist, looking for a zone with enough free. | 1409 | * Scan zonelist, looking for a zone with enough free. |