]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - include/linux/vmalloc.h
New upstream snapshot
[bcachefs-tools-debian] / include / linux / vmalloc.h
index c674d9a2c05737da3e94d21234dd366f59ecbab9..ccb319eb52a4a444db0f5981f23a7acfa92bc2f7 100644 (file)
 
 static inline void *__vmalloc(unsigned long size, gfp_t gfp_mask)
 {
+       unsigned i = 0;
        void *p;
 
        size = round_up(size, PAGE_SIZE);
 
-       run_shrinkers();
+       do {
+               run_shrinkers();
 
-       p = aligned_alloc(PAGE_SIZE, size);
-       if (!p)
-               return NULL;
-
-       if (gfp_mask & __GFP_ZERO)
-               memset(p, 0, size);
+               p = aligned_alloc(PAGE_SIZE, size);
+               if (p && gfp_mask & __GFP_ZERO)
+                       memset(p, 0, size);
+       } while (!p && i++ < 10);
 
        return p;
 }