]> err.no Git - linux-2.6/commitdiff
kcalloc: remove runtime division
authorMilton Miller <miltonm@bga.com>
Thu, 24 Jul 2008 04:28:20 +0000 (21:28 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 Jul 2008 17:47:21 +0000 (10:47 -0700)
While in all cases in the kernel we know the size of the elements to be
created, we don't always know the count of elements.  By commuting the size
and count in the overflow check, the compiler can reduce the runtime division
of size_t with a compare to a (unique) constant in these cases.

Signed-off-by: Milton Miller <miltonm@bga.com>
Cc: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/slab.h

index 9aa90a6f20e02e920e883f17e7393aa0e0046400..41103910f8a2c6ece5495477a65496a5d277db6a 100644 (file)
@@ -180,7 +180,7 @@ size_t ksize(const void *);
  */
 static inline void *kcalloc(size_t n, size_t size, gfp_t flags)
 {
-       if (n != 0 && size > ULONG_MAX / n)
+       if (size != 0 && n > ULONG_MAX / size)
                return NULL;
        return __kmalloc(n * size, flags | __GFP_ZERO);
 }