From 554f80e97289e58da5f8cd5d6334edd78d1f0461 Mon Sep 17 00:00:00 2001 From: Hans Rosenfeld Date: Sun, 17 Mar 2019 17:01:18 +0100 Subject: OS-7672 recursive mutex enter in ahci --- usr/src/uts/common/io/sata/adapters/ahci/ahci.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'usr/src') diff --git a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c index 5365f4d98b..0e4fb433cf 100644 --- a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c +++ b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c @@ -82,6 +82,7 @@ */ #include +#include #include #include #include @@ -10839,22 +10840,19 @@ static void ahci_em_quiesce(ahci_ctl_t *ahci_ctlp) { ASSERT(ahci_ctlp->ahcictl_em_flags & AHCI_EM_PRESENT); + VERIFY(mutex_owned(&ahci_ctlp->ahcictl_mutex)); - mutex_enter(&ahci_ctlp->ahcictl_mutex); ahci_ctlp->ahcictl_em_flags |= AHCI_EM_QUIESCE; - mutex_exit(&ahci_ctlp->ahcictl_mutex); - ddi_taskq_wait(ahci_ctlp->ahcictl_em_taskq); } static void ahci_em_suspend(ahci_ctl_t *ahci_ctlp) { - ahci_em_quiesce(ahci_ctlp); + VERIFY(mutex_owned(&ahci_ctlp->ahcictl_mutex)); - mutex_enter(&ahci_ctlp->ahcictl_mutex); + ahci_em_quiesce(ahci_ctlp); ahci_ctlp->ahcictl_em_flags &= ~AHCI_EM_READY; - mutex_exit(&ahci_ctlp->ahcictl_mutex); } static void @@ -10875,7 +10873,10 @@ ahci_em_fini(ahci_ctl_t *ahci_ctlp) return; } + mutex_enter(&ahci_ctlp->ahcictl_mutex); ahci_em_quiesce(ahci_ctlp); + mutex_exit(&ahci_ctlp->ahcictl_mutex); + ddi_taskq_destroy(ahci_ctlp->ahcictl_em_taskq); ahci_ctlp->ahcictl_em_taskq = NULL; } -- cgit v1.2.3