From a1e420856f366519c33d3c47bffbb9ea0a979a3e Mon Sep 17 00:00:00 2001 From: scottl Date: Wed, 11 Jan 2006 00:37:13 +0000 Subject: The interlock in taskqueue_terminate() is completely wrong for taskqueues that use spinlocks. Remove it for now. --- sys/kern/subr_taskqueue.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'sys/kern/subr_taskqueue.c') diff --git a/sys/kern/subr_taskqueue.c b/sys/kern/subr_taskqueue.c index 794b103..3cc8292 100644 --- a/sys/kern/subr_taskqueue.c +++ b/sys/kern/subr_taskqueue.c @@ -145,11 +145,7 @@ taskqueue_terminate(struct proc **pp, struct taskqueue *tq) *pp = NULL; if (p) { wakeup_one(tq); - PROC_LOCK(p); /* NB: insure we don't miss wakeup */ - TQ_UNLOCK(tq); /* let taskqueue thread run */ - TQ_SLEEP(tq, p, &p->p_mtx, PWAIT, "taskqueue_destroy", 0); - PROC_UNLOCK(p); - TQ_LOCK(tq); + TQ_SLEEP(tq, p, &tq->tq_mutex, PWAIT, "taskqueue_destroy", 0); } } -- cgit v1.1