diff options
author | Christoph Lameter <clameter@engr.sgi.com> | 2005-09-22 21:44:10 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-22 22:17:36 -0700 |
commit | eafb42707b21beb42bba4eae7b742f837ee9d2e0 (patch) | |
tree | a2b4f7042bb622ecbe8aaa003a96a6024d8bbc00 /mm | |
parent | 0cdc82ee1ae36c1ae4631fc3a782faeb0b90df38 (diff) | |
download | blackbird-op-linux-eafb42707b21beb42bba4eae7b742f837ee9d2e0.tar.gz blackbird-op-linux-eafb42707b21beb42bba4eae7b742f837ee9d2e0.zip |
[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>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/slab.c | 3 |
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) * functions. */ cachep = __find_general_cachep(size, flags); - if (unlikely(cachep == NULL)) - return NULL; + BUG_ON(!cachep); /* Allocation size too large for kmalloc */ return __cache_alloc(cachep, flags); } EXPORT_SYMBOL(__kmalloc); |