Re: [PATCH] fdtable: Avoid triggering OOMs from alloc_fdmem
From: Eric W. Biederman <hidden>
Date: 2014-02-04 18:53:35
Also in:
linux-fsdevel, linux-mm, lkml
Cong Wang [off-list ref] writes:
On Mon, Feb 3, 2014 at 9:26 PM, Eric W. Biederman [off-list ref] wrote:quoted
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?
I think I would much rather keep the current semantics of return -ENOMEM and keep the problem localized then trigger a box wide OOM thank you very much. Retrying the kmalloc without __GFP_NORETRY is pointless. If you are in the unlikely 0.01% of the time when the kmalloc fails it is almost certainly going to fail again. Writing out_of_memory() as kmalloc() is pointless and very confusing. The vmalloc won't fail unless you are on a 32bit box. So it isn't a case that anyone has to deal with in practice. Eric -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>