diff options
author | jhb <jhb@FreeBSD.org> | 2002-08-01 13:35:38 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2002-08-01 13:35:38 +0000 |
commit | a20667249ea3dd50ed661b39d30476958a826d67 (patch) | |
tree | 26f84d226370d3aaa0b90ab4f5e6465a0baf47ba /sys/kern/subr_taskqueue.c | |
parent | 292ee3bd86be278e35b95da5aa6bcb21fe4720f4 (diff) | |
download | FreeBSD-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.c | 1 |
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); |