svn commit: r282239 - head/sys/cam/scsi

Scott Long scottl at FreeBSD.org
Wed Apr 29 17:18:42 UTC 2015


Author: scottl
Date: Wed Apr 29 17:18:41 2015
New Revision: 282239
URL: https://svnweb.freebsd.org/changeset/base/282239

Log:
  Revert r282227.  It is clearly incorrect as it frees an object that is still
  referenced.  I think that there does exist an unlikely edge case for a
  memory leak, but only if a driver is incorrectly written and specifies no
  valid range of targets to scan.  That can be fixed in a follow-up commit.
  
  Obtained from:	Netflix, Inc.

Modified:
  head/sys/cam/scsi/scsi_xpt.c

Modified: head/sys/cam/scsi/scsi_xpt.c
==============================================================================
--- head/sys/cam/scsi/scsi_xpt.c	Wed Apr 29 17:01:28 2015	(r282238)
+++ head/sys/cam/scsi/scsi_xpt.c	Wed Apr 29 17:18:41 2015	(r282239)
@@ -2008,7 +2008,6 @@ scsi_scan_bus(struct cam_periph *periph,
 				       " with status %#x, bus scan halted\n",
 				       status);
 				free(scan_info, M_CAMXPT);
-				scan_info = NULL;
 				request_ccb->ccb_h.status = status;
 				xpt_free_ccb(work_ccb);
 				xpt_done(request_ccb);
@@ -2018,7 +2017,6 @@ scsi_scan_bus(struct cam_periph *periph,
 			if (work_ccb == NULL) {
 				xpt_free_ccb((union ccb *)scan_info->cpi);
 				free(scan_info, M_CAMXPT);
-				scan_info = NULL;
 				xpt_free_path(path);
 				request_ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
 				xpt_done(request_ccb);
@@ -2034,7 +2032,6 @@ scsi_scan_bus(struct cam_periph *periph,
 			xpt_action(work_ccb);
 		}
 
-		free(scan_info, M_CAMXPT);
 		mtx_lock(mtx);
 		break;
 	}


More information about the svn-src-all mailing list