Page MenuHomeFreeBSD

D19109.diff
No OneTemporary

D19109.diff

Index: head/sys/cam/scsi/scsi_xpt.c
===================================================================
--- head/sys/cam/scsi/scsi_xpt.c
+++ head/sys/cam/scsi/scsi_xpt.c
@@ -1385,6 +1385,12 @@
probe_purge_old(path, lp, softc->flags);
lp = NULL;
}
+ /* The processing above should either exit via a `goto
+ * out` or leave the `lp` variable `NULL` and (if
+ * applicable) `free()` the storage to which it had
+ * pointed. Assert here that is the case.
+ */
+ KASSERT(lp == NULL, ("%s: lp is not NULL", __func__));
inq_buf = &path->device->inq_data;
if (path->device->flags & CAM_DEV_INQUIRY_DATA_VALID &&
(SID_QUAL(inq_buf) == SID_QUAL_LU_CONNECTED ||
@@ -1397,9 +1403,6 @@
xpt_release_ccb(done_ccb);
xpt_schedule(periph, priority);
goto out;
- }
- if (lp) {
- free(lp, M_CAMXPT);
}
PROBE_SET_ACTION(softc, PROBE_INVALID);
xpt_release_ccb(done_ccb);

File Metadata

Mime Type
text/plain
Expires
Tue, May 19, 2:51 AM (14 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33287918
Default Alt Text
D19109.diff (908 B)

Event Timeline