Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Apr 2015 17:18:41 +0000 (UTC)
From:      Scott Long <scottl@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r282239 - head/sys/cam/scsi
Message-ID:  <201504291718.t3THIf49020524@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201504291718.t3THIf49020524>