]> git.hungrycats.org Git - linux/commitdiff
[PATCH] fix memory leak while coredumping
authorAndrew Morton <akpm@osdl.org>
Wed, 4 Feb 2004 02:52:07 +0000 (18:52 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Wed, 4 Feb 2004 02:52:07 +0000 (18:52 -0800)
From: IWAMOTO Toshihiro <iwamoto@valinux.co.jp>

This patch fixes a memory leak that happens when a core file hits the
process's resource limit.

fs/binfmt_elf.c

index be00c6c3d650150c5c73187961a900e9bd832db5..9235d967ae8528bf4dd6b6fd65d2842ea14c0f35 100644 (file)
@@ -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);