summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_proc.c
diff options
context:
space:
mode:
authorvisa <visa@openbsd.org>2018-11-12 15:09:17 +0000
committervisa <visa@openbsd.org>2018-11-12 15:09:17 +0000
commite0e8a7c4892bc434a32dba76ca02883f9b1071d1 (patch)
tree6e775ad33122da8163703582cf93772d54dbfdd6 /sys/kern/kern_proc.c
parentAllow style #[] in mode formats. (diff)
downloadwireguard-openbsd-e0e8a7c4892bc434a32dba76ca02883f9b1071d1.tar.xz
wireguard-openbsd-e0e8a7c4892bc434a32dba76ca02883f9b1071d1.zip
Add a mechanism for managing asynchronous IO signal registrations.
It centralizes IO signal privilege checking and makes possible to revoke a registration when the target process or process group is deleted. Adapted from FreeBSD. OK kettenis@ mpi@ guenther@
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r--sys/kern/kern_proc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 0ce3d285796..934cf455ba1 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_proc.c,v 1.84 2018/06/21 13:58:21 visa Exp $ */
+/* $OpenBSD: kern_proc.c,v 1.85 2018/11/12 15:09:17 visa Exp $ */
/* $NetBSD: kern_proc.c,v 1.14 1996/02/09 18:59:41 christos Exp $ */
/*
@@ -278,6 +278,7 @@ enternewpgrp(struct process *pr, struct pgrp *pgrp, struct session *newsess)
}
pgrp->pg_id = pr->ps_pid;
LIST_INIT(&pgrp->pg_members);
+ LIST_INIT(&pgrp->pg_sigiolst);
LIST_INSERT_HEAD(PGRPHASH(pr->ps_pid), pgrp, pg_hash);
pgrp->pg_jobc = 0;
@@ -328,6 +329,7 @@ leavepgrp(struct process *pr)
void
pgdelete(struct pgrp *pgrp)
{
+ sigio_freelist(&pgrp->pg_sigiolst);
if (pgrp->pg_session->s_ttyp != NULL &&
pgrp->pg_session->s_ttyp->t_pgrp == pgrp)