aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@engr.sgi.com>2005-09-23 00:44:10 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-23 01:17:36 -0400
commiteafb42707b21beb42bba4eae7b742f837ee9d2e0 (patch)
treea2b4f7042bb622ecbe8aaa003a96a6024d8bbc00
parent0cdc82ee1ae36c1ae4631fc3a782faeb0b90df38 (diff)
[PATCH] __kmalloc: Generate BUG if size requested is too large.
I had an issue on ia64 where I got a bug in kernel/workqueue because kzalloc returned a NULL pointer due to the task structure getting too big for the slab allocator. Usually these cases are caught by the kmalloc macro in include/linux/slab.h. Compilation will fail if a too big value is passed to kmalloc. However, kzalloc uses __kmalloc which has no check for that. This patch makes __kmalloc bug if a too large entity is requested. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--mm/slab.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/mm/slab.c b/mm/slab.c
index c9adfce00405..ad113c431e39 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -2907,8 +2907,7 @@ void *__kmalloc(size_t size, unsigned int __nocast flags)
2907 * functions. 2907 * functions.
2908 */ 2908 */
2909 cachep = __find_general_cachep(size, flags); 2909 cachep = __find_general_cachep(size, flags);
2910 if (unlikely(cachep == NULL)) 2910 BUG_ON(!cachep); /* Allocation size too large for kmalloc */
2911 return NULL;
2912 return __cache_alloc(cachep, flags); 2911 return __cache_alloc(cachep, flags);
2913} 2912}
2914EXPORT_SYMBOL(__kmalloc); 2913EXPORT_SYMBOL(__kmalloc);