summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_taskqueue.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2002-08-01 13:35:38 +0000
committerjhb <jhb@FreeBSD.org>2002-08-01 13:35:38 +0000
commita20667249ea3dd50ed661b39d30476958a826d67 (patch)
tree26f84d226370d3aaa0b90ab4f5e6465a0baf47ba /sys/kern/subr_taskqueue.c
parent292ee3bd86be278e35b95da5aa6bcb21fe4720f4 (diff)
downloadFreeBSD-src-a20667249ea3dd50ed661b39d30476958a826d67.zip
FreeBSD-src-a20667249ea3dd50ed661b39d30476958a826d67.tar.gz
If we fail to write to a vnode during a ktrace write, then we drop all
other references to that vnode as a trace vnode in other processes as well as in any pending requests on the todo list. Thus, it is possible for a ktrace request structure to have a NULL ktr_vp when it is destroyed in ktr_freerequest(). We shouldn't call vrele() on the vnode in that case. Reported by: bde
Diffstat (limited to 'sys/kern/subr_taskqueue.c')
-rw-r--r--sys/kern/subr_taskqueue.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/subr_taskqueue.c b/sys/kern/subr_taskqueue.c
index 19a93ad..28fbe38 100644
--- a/sys/kern/subr_taskqueue.c
+++ b/sys/kern/subr_taskqueue.c
@@ -94,6 +94,7 @@ taskqueue_free(struct taskqueue *queue)
{
mtx_lock(&queue->tq_mutex);
+ KASSERT(queue->tq_draining == 0, ("free'ing a draining taskqueue"));
queue->tq_draining = 1;
mtx_unlock(&queue->tq_mutex);
OpenPOWER on IntegriCloud