From 8d849f5b2e1cb3db841bcc08342dac7f2997fb9d Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 3 Feb 2004 18:52:07 -0800 Subject: [PATCH] [PATCH] fix memory leak while coredumping From: IWAMOTO Toshihiro This patch fixes a memory leak that happens when a core file hits the process's resource limit. --- fs/binfmt_elf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index be00c6c3d6501..9235d967ae852 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -1448,7 +1448,13 @@ static int elf_core_dump(long signr, struct pt_regs * regs, struct file * file) void *kaddr; flush_cache_page(vma, addr); kaddr = kmap(page); - DUMP_WRITE(kaddr, PAGE_SIZE); + if ((size += PAGE_SIZE) > limit || + !dump_write(file, kaddr, + PAGE_SIZE)) { + kunmap(page); + page_cache_release(page); + goto end_coredump; + } kunmap(page); } page_cache_release(page); -- 2.53.0