2006-03-20 13:12:40

by Oliver Neukum

[permalink] [raw]
Subject: [PATCH]micro optimization of kcalloc

Hi,

this transforms the limit check of kcalloc() so that size becomes the
divisor. This saves some kernel code, because size is always a constant,
thus turning the check into a simple comparison saving a full division.
This saved 18K in allyesconfig's kernel size.

Regards
Oliver

Signed-off-by: Oliver Neukum <[email protected]>

--- a/include/linux/slab.h 2006-03-11 23:12:55.000000000 +0100
+++ b/include/linux/slab.h 2006-03-20 09:00:41.000000000 +0100
@@ -118,7 +118,7 @@
*/
static inline void *kcalloc(size_t n, size_t size, gfp_t flags)
{
- if (n != 0 && size > INT_MAX / n)
+ if (unlikely(n > INT_MAX / size ))
return NULL;
return kzalloc(n * size, flags);
}