summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2019-05-01 06:22:40 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2019-05-01 06:22:40 +0000
commit439b645d179139c8d6280b50b444e523dc454eb0 (patch)
tree722b6f7b015c2bf477dd75b12abaa191bb46c375
parent04a31e5424c73b06d2df33edcb0a32b8853ba888 (diff)
sprinkle some KERNEL_ASSERT_LOCKED()
operations that tweak the kq_head and kq_count need to be serialised against the kevent syscall which also fumbles with the list and count too. these asserts would have made it extremely obvious where the tun(4) bug was. for half the time of the bug report about it we werent even sure it was tun(4) discussed with mpi@ jmatthew@
-rw-r--r--sys/kern/kern_event.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index 755c53ec86c..57b508d46f7 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_event.c,v 1.101 2018/11/27 15:52:50 cheloha Exp $ */
+/* $OpenBSD: kern_event.c,v 1.102 2019/05/01 06:22:39 dlg Exp $ */
/*-
* Copyright (c) 1999,2000,2001 Jonathan Lemon <jlemon@FreeBSD.org>
@@ -1073,6 +1073,7 @@ knote_enqueue(struct knote *kn)
int s = splhigh();
KASSERT((kn->kn_status & KN_QUEUED) == 0);
+ KERNEL_ASSERT_LOCKED();
TAILQ_INSERT_TAIL(&kq->kq_head, kn, kn_tqe);
kn->kn_status |= KN_QUEUED;
@@ -1088,6 +1089,7 @@ knote_dequeue(struct knote *kn)
int s = splhigh();
KASSERT(kn->kn_status & KN_QUEUED);
+ KERNEL_ASSERT_LOCKED();
TAILQ_REMOVE(&kq->kq_head, kn, kn_tqe);
kn->kn_status &= ~KN_QUEUED;