Re: [PATCH] Uninline kcalloc()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sep 24, 2007, at 01:35:08, Valdis.Kletnieks@vt.edu wrote:
On Sun, 23 Sep 2007 00:03:49 +0400, Alexey Dobriyan said:
-static inline void *kcalloc(size_t n, size_t size, gfp_t flags)
-{
-	if (n != 0 && size > ULONG_MAX / n)
-		return NULL;
-	return __kmalloc(n * size, flags | __GFP_ZERO);
-}
+void *kcalloc(size_t n, size_t size, gfp_t flags);
NAK.

This busticates some pretty subtle code in mm/slab.c that uses uses __builtin_return_address() for debugging - if you do this, then the "calling function" gets listed as "kcalloc()" rather than the much more useful "function that called kcalloc()" (which is what you care about).
(I remember going around and around multiple times getting those  
stupid inlines set up right, so that feature actually did something  
useful, otherwise kcalloc and kzalloc didn't report where they were  
called from).
Proper fix is to give __kmalloc a "void *caller" parameter and have  
all of the various wrapper functions pass in the value of  
__builtin_return_address() appropriately.  I believe that even works  
properly for inline functions which may or may not be inlined.
Cheers,
Kyle Moffett

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux