include/linux/slab.h: add kmalloc_array_node() and kcalloc_node()
[sfrench/cifs-2.6.git] / include / linux / slab.h
index f37cb93768abc634f9afbec174470e25941ac9a6..ebddfca9e24b82d00748209b9427647523893ed6 100644 (file)
@@ -650,6 +650,22 @@ extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long);
 #define kmalloc_track_caller(size, flags) \
        __kmalloc_track_caller(size, flags, _RET_IP_)
 
+static inline void *kmalloc_array_node(size_t n, size_t size, gfp_t flags,
+                                      int node)
+{
+       if (size != 0 && n > SIZE_MAX / size)
+               return NULL;
+       if (__builtin_constant_p(n) && __builtin_constant_p(size))
+               return kmalloc_node(n * size, flags, node);
+       return __kmalloc_node(n * size, flags, node);
+}
+
+static inline void *kcalloc_node(size_t n, size_t size, gfp_t flags, int node)
+{
+       return kmalloc_array_node(n, size, flags | __GFP_ZERO, node);
+}
+
+
 #ifdef CONFIG_NUMA
 extern void *__kmalloc_node_track_caller(size_t, gfp_t, int, unsigned long);
 #define kmalloc_node_track_caller(size, flags, node) \