Module Name: src Committed By: riastradh Date: Mon Aug 15 11:43:56 UTC 2022
Modified Files: src/sys/kern: subr_workqueue.c Log Message: workqueue(9): workqueue_wait and workqueue_destroy may sleep. But might not, so assert sleepable up front. To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/kern/subr_workqueue.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/subr_workqueue.c diff -u src/sys/kern/subr_workqueue.c:1.39 src/sys/kern/subr_workqueue.c:1.40 --- src/sys/kern/subr_workqueue.c:1.39 Tue Sep 8 17:02:18 2020 +++ src/sys/kern/subr_workqueue.c Mon Aug 15 11:43:56 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_workqueue.c,v 1.39 2020/09/08 17:02:18 riastradh Exp $ */ +/* $NetBSD: subr_workqueue.c,v 1.40 2022/08/15 11:43:56 riastradh Exp $ */ /*- * Copyright (c)2002, 2005, 2006, 2007 YAMAMOTO Takashi, @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: subr_workqueue.c,v 1.39 2020/09/08 17:02:18 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_workqueue.c,v 1.40 2022/08/15 11:43:56 riastradh Exp $"); #include <sys/param.h> #include <sys/cpu.h> @@ -324,6 +324,8 @@ workqueue_wait(struct workqueue *wq, str struct workqueue_queue *q; bool found; + ASSERT_SLEEPABLE(); + if (ISSET(wq->wq_flags, WQ_PERCPU)) { struct cpu_info *ci; CPU_INFO_ITERATOR cii; @@ -346,6 +348,8 @@ workqueue_destroy(struct workqueue *wq) struct cpu_info *ci; CPU_INFO_ITERATOR cii; + ASSERT_SLEEPABLE(); + wq->wq_func = workqueue_exit; for (CPU_INFO_FOREACH(cii, ci)) { q = workqueue_queue_lookup(wq, ci);