On Mon, Feb 3, 2014 at 9:26 PM, Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote: > diff --git a/fs/file.c b/fs/file.c > index 771578b33fb6..db25c2bdfe46 100644 > --- a/fs/file.c > +++ b/fs/file.c > @@ -34,7 +34,7 @@ static void *alloc_fdmem(size_t size) > * vmalloc() if the allocation size will be considered "large" by the VM. > */ > if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) { > - void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN); > + void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN|__GFP_NORETRY); > if (data != NULL) > return data; > } Or try again without __GFP_NORETRY like we do in nelink mmap? diff --git a/fs/file.c b/fs/file.c index 771578b..5c7a7b5 100644 --- a/fs/file.c +++ b/fs/file.c @@ -29,16 +29,20 @@ int sysctl_nr_open_max = 1024 * 1024; /* raised later */ static void *alloc_fdmem(size_t size) { + void *data; /* * Very large allocations can stress page reclaim, so fall back to * vmalloc() if the allocation size will be considered "large" by the VM. */ if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) { - void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN); + data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN|__GFP_NORETRY); if (data != NULL) return data; } - return vmalloc(size); + data = vmalloc(size); + if (data != NULL) + return data; + return kmalloc(size, GFP_KERNEL|__GFP_NOWARN); } static void free_fdmem(void *ptr) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html