⬢ DragonFlyBSD Kernel Audit
DF-3804 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/raid/mpr/mpr_sas.c b/sys/dev/raid/mpr/mpr_sas.c
index 1111111..2222222 100644
--- a/sys/dev/raid/mpr/mpr_sas.c
+++ b/sys/dev/raid/mpr/mpr_sas.c
@@ -3684,8 +3684,11 @@ mprsas_check_eedp(struct mpr_softc *sc, struct cam_path *path,
 	rcap_buf = kmalloc(sizeof(struct scsi_read_capacity_eedp), M_MPR,
 	    M_NOWAIT | M_ZERO);
 	if (rcap_buf == NULL) {
 		mpr_dprint(sc, MPR_ERROR, "Unable to alloc read capacity "
 		    "buffer for EEDP support.\n");
-		xpt_free_path(ccb->ccb_h.path);
+		/* DF-3804: ccb->ccb_h.path was never assigned (NULL);
+		 * the path we created is local_path. */
+		xpt_free_path(local_path);
 		xpt_free_ccb(&ccb->ccb_h);
 		return;
 	}