Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Oct 2016 19:42:26 +0000 (UTC)
From:      "Kenneth D. Merry" <ken@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r307684 - head/sbin/camcontrol
Message-ID:  <201610201942.u9KJgQOR062772@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ken
Date: Thu Oct 20 19:42:26 2016
New Revision: 307684
URL: https://svnweb.freebsd.org/changeset/base/307684

Log:
  For CCBs allocated on the stack, we need to clear the entire CCB, not just
  the header.  Otherwise stack garbage can lead to random flags getting set.
  
  This showed up as 'camcontrol rescan all' failing with EINVAL because the
  address type wasn't CAM_DATA_VADDR.
  
  sbin/camcontrol/camcontrol.c:
  	In rescan_or_reset_bus(), bzero the stack-allocated CCBs before
  	use instead of clearing the body.
  
  MFC after:	3 days
  Sponsored by:	Spectra Logic

Modified:
  head/sbin/camcontrol/camcontrol.c

Modified: head/sbin/camcontrol/camcontrol.c
==============================================================================
--- head/sbin/camcontrol/camcontrol.c	Thu Oct 20 18:43:12 2016	(r307683)
+++ head/sbin/camcontrol/camcontrol.c	Thu Oct 20 19:42:26 2016	(r307684)
@@ -3139,6 +3139,8 @@ rescan_or_reset_bus(path_id_t bus, int r
 		return(1);
 	}
 
+	bzero(&ccb, sizeof(ccb));
+
 	if (bus != CAM_BUS_WILDCARD) {
 		ccb.ccb_h.func_code = rescan ? XPT_SCAN_BUS : XPT_RESET_BUS;
 		ccb.ccb_h.path_id = bus;
@@ -3181,7 +3183,7 @@ rescan_or_reset_bus(path_id_t bus, int r
 	 * no-op, sending a rescan to the xpt bus would result in a status of
 	 * CAM_REQ_INVALID.
 	 */
-	CCB_CLEAR_ALL_EXCEPT_HDR(&matchccb.cdm);
+	bzero(&matchccb, sizeof(matchccb));
 	matchccb.ccb_h.func_code = XPT_DEV_MATCH;
 	matchccb.ccb_h.path_id = CAM_BUS_WILDCARD;
 	bufsize = sizeof(struct dev_match_result) * 20;



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