Fix double mutex lock.
Reported by: Coverity CID: 1394833 Discussed with: Leon Dang Sponsored by: iXsystems Inc.
This commit is contained in:
parent
b991b318d4
commit
df90fce298
@ -358,7 +358,7 @@ pci_nvme_init_nsdata(struct pci_nvme_softc *sc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pci_nvme_reset(struct pci_nvme_softc *sc)
|
pci_nvme_reset_locked(struct pci_nvme_softc *sc)
|
||||||
{
|
{
|
||||||
DPRINTF(("%s\r\n", __func__));
|
DPRINTF(("%s\r\n", __func__));
|
||||||
|
|
||||||
@ -374,7 +374,6 @@ pci_nvme_reset(struct pci_nvme_softc *sc)
|
|||||||
sc->regs.csts = 0;
|
sc->regs.csts = 0;
|
||||||
|
|
||||||
if (sc->submit_queues != NULL) {
|
if (sc->submit_queues != NULL) {
|
||||||
pthread_mutex_lock(&sc->mtx);
|
|
||||||
sc->num_cqueues = sc->num_squeues = sc->max_queues;
|
sc->num_cqueues = sc->num_squeues = sc->max_queues;
|
||||||
|
|
||||||
for (int i = 0; i <= sc->max_queues; i++) {
|
for (int i = 0; i <= sc->max_queues; i++) {
|
||||||
@ -398,8 +397,6 @@ pci_nvme_reset(struct pci_nvme_softc *sc)
|
|||||||
sc->compl_queues[i].tail = 0;
|
sc->compl_queues[i].tail = 0;
|
||||||
sc->compl_queues[i].head = 0;
|
sc->compl_queues[i].head = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_unlock(&sc->mtx);
|
|
||||||
} else
|
} else
|
||||||
sc->submit_queues = calloc(sc->max_queues + 1,
|
sc->submit_queues = calloc(sc->max_queues + 1,
|
||||||
sizeof(struct nvme_submission_queue));
|
sizeof(struct nvme_submission_queue));
|
||||||
@ -413,6 +410,14 @@ pci_nvme_reset(struct pci_nvme_softc *sc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
pci_nvme_reset(struct pci_nvme_softc *sc)
|
||||||
|
{
|
||||||
|
pthread_mutex_lock(&sc->mtx);
|
||||||
|
pci_nvme_reset_locked(sc);
|
||||||
|
pthread_mutex_unlock(&sc->mtx);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pci_nvme_init_controller(struct vmctx *ctx, struct pci_nvme_softc *sc)
|
pci_nvme_init_controller(struct vmctx *ctx, struct pci_nvme_softc *sc)
|
||||||
{
|
{
|
||||||
@ -1537,7 +1542,7 @@ pci_nvme_write_bar_0(struct vmctx *ctx, struct pci_nvme_softc* sc,
|
|||||||
if (NVME_CC_GET_EN(ccreg) != NVME_CC_GET_EN(sc->regs.cc)) {
|
if (NVME_CC_GET_EN(ccreg) != NVME_CC_GET_EN(sc->regs.cc)) {
|
||||||
if (NVME_CC_GET_EN(ccreg) == 0)
|
if (NVME_CC_GET_EN(ccreg) == 0)
|
||||||
/* transition 1-> causes controller reset */
|
/* transition 1-> causes controller reset */
|
||||||
pci_nvme_reset(sc);
|
pci_nvme_reset_locked(sc);
|
||||||
else
|
else
|
||||||
pci_nvme_init_controller(ctx, sc);
|
pci_nvme_init_controller(ctx, sc);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user