summaryrefslogtreecommitdiffstats
path: root/sys/kern/exec_elf.c
diff options
context:
space:
mode:
authorbluhm <bluhm@openbsd.org>2019-05-13 19:21:31 +0000
committerbluhm <bluhm@openbsd.org>2019-05-13 19:21:31 +0000
commit788422d65be41111bc05f25ec194535e3ae7eb6c (patch)
tree2a0e4cfda82fe14e76fd02a67a366b04f0eddc90 /sys/kern/exec_elf.c
parentDo not check for IFF_RUNNING inside bstp_initialization(). (diff)
downloadwireguard-openbsd-788422d65be41111bc05f25ec194535e3ae7eb6c.tar.xz
wireguard-openbsd-788422d65be41111bc05f25ec194535e3ae7eb6c.zip
When killing a process, the signal is handled by any thread that
does not block the signal. If all threads block the signal, we delivered it to the main thread. This does not conform to POSIX. If any thread unblocks the signal, it should be delivered immediately to this thread. Mark such signals pending at the process instead of a single thread. Then any thread can handle it later. OK kettenis@ guenther@
Diffstat (limited to 'sys/kern/exec_elf.c')
-rw-r--r--sys/kern/exec_elf.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/exec_elf.c b/sys/kern/exec_elf.c
index 9d5639a24a7..24adf0dbed6 100644
--- a/sys/kern/exec_elf.c
+++ b/sys/kern/exec_elf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: exec_elf.c,v 1.150 2019/05/11 19:59:26 deraadt Exp $ */
+/* $OpenBSD: exec_elf.c,v 1.151 2019/05/13 19:21:31 bluhm Exp $ */
/*
* Copyright (c) 1996 Per Fogelstrom
@@ -1211,7 +1211,7 @@ coredump_notes_elf(struct proc *p, void *iocookie, size_t *sizep)
cpi.cpi_signo = p->p_sisig;
cpi.cpi_sigcode = p->p_sicode;
- cpi.cpi_sigpend = p->p_siglist;
+ cpi.cpi_sigpend = p->p_siglist | pr->ps_siglist;
cpi.cpi_sigmask = p->p_sigmask;
cpi.cpi_sigignore = pr->ps_sigacts->ps_sigignore;
cpi.cpi_sigcatch = pr->ps_sigacts->ps_sigcatch;