summaryrefslogtreecommitdiffstats
path: root/sys/kern/exec_elf.c
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2013-01-15 01:34:27 +0000
committerderaadt <deraadt@openbsd.org>2013-01-15 01:34:27 +0000
commit957e8d410d62b72a19679eba28a2944acfe5253f (patch)
tree9d30e547a54ece9bd3f1f260ce2cb14871fb6246 /sys/kern/exec_elf.c
parentLoongson: Remove some of the unused defines. (diff)
downloadwireguard-openbsd-957e8d410d62b72a19679eba28a2944acfe5253f.tar.xz
wireguard-openbsd-957e8d410d62b72a19679eba28a2944acfe5253f.zip
Slice & dice coredump write requests into MAXPHYS blocks, and
yield between operations. Re-grab the vnode every operation, so that multiple coredumps can be saved at the same time. ok guenther beck etc
Diffstat (limited to 'sys/kern/exec_elf.c')
-rw-r--r--sys/kern/exec_elf.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/exec_elf.c b/sys/kern/exec_elf.c
index 1550478c8a7..0322e7c2b47 100644
--- a/sys/kern/exec_elf.c
+++ b/sys/kern/exec_elf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: exec_elf.c,v 1.89 2012/09/17 17:11:49 matthew Exp $ */
+/* $OpenBSD: exec_elf.c,v 1.90 2013/01/15 01:34:27 deraadt Exp $ */
/*
* Copyright (c) 1996 Per Fogelstrom
@@ -1072,6 +1072,9 @@ ELFNAMEEND(coredump)(struct proc *p, void *cookie)
if (error)
goto out;
+ coredump_unmap(cookie, (vaddr_t)psections[i].p_vaddr,
+ (vaddr_t)psections[i].p_vaddr + psections[i].p_filesz);
+
#ifdef DIAGNOSTIC
offset += psections[i].p_filesz;
#endif