DragonFlyBSD Kernel Audit
DF-1619 / fix.diff
← back to finding ↓ download raw
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;