--- old/fs/binfmt_elf.c Fri Jan 16 12:12:24 2004 +++ new/fs/binfmt_elf.c Mon Feb 2 19:31:42 2004 @@ -1441,12 +1441,22 @@ DUMP_SEEK (file->f_pos + PAGE_SIZE); } else { if (page == ZERO_PAGE(addr)) { - DUMP_SEEK (file->f_pos + PAGE_SIZE); + if (!dump_seek(file, + file->f_pos + PAGE_SIZE)) { + page_cache_release(page); + goto end_coredump; + } } else { 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);