aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Horne <mhorne@FreeBSD.org>2023-11-23 15:25:54 +0000
committerMitchell Horne <mhorne@FreeBSD.org>2023-12-08 22:02:44 +0000
commit9732eb8eae7294a47cd64af5f11221792a984f71 (patch)
treef892159f8a3b0e2ef9d81c1195765bbef8994414
parent951d60ee3ada170155b98e919d45e872797d88fa (diff)
downloadsrc-9732eb8eae7294a47cd64af5f11221792a984f71.tar.gz
src-9732eb8eae7294a47cd64af5f11221792a984f71.zip
ctl_ha: don't shutdown threads if scheduler is stopped
In this case, just return. Reviewed by: markj MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42341 (cherry picked from commit 9d61fd08499609a2c95d1c66f97587932b446f06)
-rw-r--r--sys/cam/ctl/ctl_ha.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/cam/ctl/ctl_ha.c b/sys/cam/ctl/ctl_ha.c
index 32c83025bb1b..1951f74c45f3 100644
--- a/sys/cam/ctl/ctl_ha.c
+++ b/sys/cam/ctl/ctl_ha.c
@@ -910,13 +910,16 @@ ctl_ha_msg_shutdown(struct ctl_softc *ctl_softc)
{
struct ha_softc *softc = &ha_softc;
+ if (SCHEDULER_STOPPED())
+ return;
+
/* Disconnect and shutdown threads. */
mtx_lock(&softc->ha_lock);
if (softc->ha_shutdown < 2) {
softc->ha_shutdown = 1;
softc->ha_wakeup = 1;
wakeup(&softc->ha_wakeup);
- while (softc->ha_shutdown < 2 && !SCHEDULER_STOPPED()) {
+ while (softc->ha_shutdown < 2) {
msleep(&softc->ha_wakeup, &softc->ha_lock, 0,
"shutdown", hz);
}