]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - include/linux/slab.h
Fix build on 32 bit
[bcachefs-tools-debian] / include / linux / slab.h
index cf48570c1580e0ea092a4380bbc2a650829b496c..ca0c7934d3bbc0443e54b52e188dfd6d87d3d6c9 100644 (file)
 #include <stdlib.h>
 #include <sys/mman.h>
 
+#define alloc_hooks(_do, ...)          _do
+
 #define ARCH_KMALLOC_MINALIGN          16
 #define KMALLOC_MAX_SIZE               SIZE_MAX
 
-static inline void *kmalloc(size_t size, gfp_t flags)
+static inline void *kmalloc_noprof(size_t size, gfp_t flags)
 {
        unsigned i;
        void *p;
 
        for (i = 0; i < 10; i++) {
                if (size) {
-                       size_t alignment = min(rounddown_pow_of_two(size), (size_t)PAGE_SIZE);
+                       size_t alignment = min_t(size_t, PAGE_SIZE,
+                                                rounddown_pow_of_two(size));
                        alignment = max(sizeof(void *), alignment);
                        if (posix_memalign(&p, alignment, size))
                                p = NULL;
@@ -44,6 +47,7 @@ static inline void *kmalloc(size_t size, gfp_t flags)
 
        return p;
 }
+#define kmalloc                kmalloc_noprof
 
 static inline void *krealloc(void *old, size_t size, gfp_t flags)
 {
@@ -77,9 +81,15 @@ static inline void *krealloc_array(void *p, size_t new_n, size_t new_size, gfp_t
 }
 
 #define kzalloc(size, flags)           kmalloc(size, flags|__GFP_ZERO)
-#define kmalloc_array(n, size, flags)                                  \
-       ((size) != 0 && (n) > SIZE_MAX / (size)                         \
-        ? NULL : kmalloc((n) * (size), flags))
+
+static inline void *kmalloc_array(size_t n, size_t size, gfp_t flags)
+{
+       size_t bytes;
+
+       if (unlikely(check_mul_overflow(n, size, &bytes)))
+               return NULL;
+       return kmalloc(bytes, flags);
+}
 
 #define kvmalloc_array(n, size, flags)                                 \
        ((size) != 0 && (n) > SIZE_MAX / (size)                         \
@@ -94,7 +104,7 @@ static inline void *krealloc_array(void *p, size_t new_n, size_t new_size, gfp_t
 #define kvzalloc(size, flags)          kzalloc(size, flags)
 #define kvfree(p)                      kfree(p)
 
-static inline struct page *alloc_pages(gfp_t flags, unsigned int order)
+static inline struct page *alloc_pages_noprof(gfp_t flags, unsigned int order)
 {
        size_t size = PAGE_SIZE << order;
        unsigned i;
@@ -114,10 +124,14 @@ static inline struct page *alloc_pages(gfp_t flags, unsigned int order)
 
        return p;
 }
+#define alloc_pages                    alloc_pages_noprof
 
 #define alloc_page(gfp)                        alloc_pages(gfp, 0)
 
+#define _get_free_pages(gfp, order)    ((unsigned long) alloc_pages(gfp, order))
 #define __get_free_pages(gfp, order)   ((unsigned long) alloc_pages(gfp, order))
+#define get_free_pages_noprof(gfp, order)                              \
+                                       ((unsigned long) alloc_pages(gfp, order))
 #define __get_free_page(gfp)           __get_free_pages(gfp, 0)
 
 #define __free_pages(page, order)                      \
@@ -174,6 +188,11 @@ static inline void *kmem_cache_alloc(struct kmem_cache *c, gfp_t gfp)
        return kmalloc(c->obj_size, gfp);
 }
 
+static inline void *kmem_cache_zalloc(struct kmem_cache *c, gfp_t gfp)
+{
+       return kzalloc(c->obj_size, gfp);
+}
+
 static inline void kmem_cache_free(struct kmem_cache *c, void *p)
 {
        kfree(p);
@@ -201,7 +220,7 @@ static inline struct kmem_cache *kmem_cache_create(size_t obj_size)
 
 #define vfree(p)               free(p)
 
-static inline void *__vmalloc(unsigned long size, gfp_t flags)
+static inline void *__vmalloc_noprof(unsigned long size, gfp_t flags)
 {
        unsigned i;
        void *p;
@@ -222,6 +241,7 @@ static inline void *__vmalloc(unsigned long size, gfp_t flags)
 
        return p;
 }
+#define __vmalloc __vmalloc_noprof
 
 static inline void *vmalloc_exec(unsigned long size, gfp_t gfp_mask)
 {