diff options
Diffstat (limited to 'include/linux/vmalloc.h')
-rw-r--r-- | include/linux/vmalloc.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index c674d9a2..ccb319eb 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h @@ -14,18 +14,18 @@ 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; } |