DF-1619 / fix.diff
diff --git a/sys/dev/raid/mrsas/mrsas_cam.c b/sys/dev/raid/mrsas/mrsas_cam.c --- a/sys/dev/raid/mrsas/mrsas_cam.c +++ b/sys/dev/raid/mrsas/mrsas_cam.c @@ -584,6 +584,10 @@ cmd = TAILQ_FIRST(&sc->mrsas_mpt_cmd_list_head); TAILQ_REMOVE(&sc->mrsas_mpt_cmd_list_head, cmd, next); } + if (cmd == NULL) { + lockmgr(&sc->mpt_cmd_pool_lock, LK_RELEASE); + return cmd; + } memset((uint8_t *)cmd->io_request, 0, MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE); cmd->data = NULL; cmd->length = 0; |