PERFORCE change 186385 for review

Matt Jacob mjacob at FreeBSD.org
Sun Nov 28 21:59:09 UTC 2010


http://p4web.freebsd.org/@@186385?ac=10

Change 186385 by mjacob at mjacob-sandbox on 2010/11/28 21:58:39

	Do not dereference out of bounds data- the total config data is a page,
	each chunk is 512 bytes. Let's keep that straight.
	
	Clean up some of the printf stuff so we only print what we are supposed
	to print, not print trainling pieces where the front part was suppressed.

Affected files ...

.. //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2pci.c#2 edit
.. //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2sas.c#2 edit
.. //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2sas.h#2 edit

Differences ...

==== //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2pci.c#2 (text+ko) ====

@@ -730,7 +730,7 @@
 	    BUS_SPACE_MAXADDR,			/* lowaddr */
 	    BUS_SPACE_MAXADDR,			/* highaddr */
 	    NULL, NULL,				/* filtfunc, filtfuncarg */
-            MPT2_CONFIG_DATA_SIZE(mpt),		/* maxsize */
+            MPT2_CONFIG_DATA_MAX(mpt),		/* maxsize */
 	    1,					/* nsegments */
 	    BUS_SPACE_MAXSIZE,			/* maxsegsz */
 	    BUS_DMA_ALLOCNOW,			/* flags */
@@ -751,7 +751,7 @@
 
 	mi.mpt = mpt;
 	mi.error = 0;
-	bus_dmamap_load(mpt->config.dmat, mpt->config.dmap, mpt->config.vaddr, MPT2_CONFIG_DATA_SIZE(mpt), mpt2sas_map_rquest, &mi, 0);
+	bus_dmamap_load(mpt->config.dmat, mpt->config.dmap, mpt->config.vaddr, MPT2_CONFIG_DATA_MAX(mpt), mpt2sas_map_rquest, &mi, 0);
 	if (mi.error) {
 		mpt2sas_prt(mpt, MP2PRT_ERR, "error %d loading dma map for config\n", mi.error);
 		goto failure;

==== //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2sas.c#2 (text+ko) ====

@@ -282,6 +282,7 @@
 		status = tpl->PHY[i].PhyStatus & MPI2_EVENT_SAS_TOPO_RC_MASK;
 		switch(status) {
 		case MPI2_EVENT_SAS_TOPO_RC_PHY_CHANGED:
+			mpt2sas_prt(mpt, MP2PRT_CONFIG, "%s: PHY chanded at entry %d\n", __func__, i);
 			break;
 		case MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED:
 			if (le16toh(tpl->PHY[i].AttachedDevHandle)) {
@@ -300,11 +301,10 @@
 		case MPI2_EVENT_SAS_TOPO_RC_TARG_NOT_RESPONDING:
 			if (le16toh(tpl->PHY[i].AttachedDevHandle)) {
 				struct topochg *tp = TAILQ_FIRST(&mpt->topo_free_list);
-				mpt2sas_prt(mpt, MP2PRT_CONFIG, "DevHandle 0x%x Departed", le16toh(tpl->PHY[i].AttachedDevHandle));
 				if (tp == NULL) {
-					printf("- event lost\n");
+					mpt2sas_prt(mpt, MP2PRT_CONFIG, "DevHandle 0x%x Departed- event lost\n", le16toh(tpl->PHY[i].AttachedDevHandle));
 				} else {
-					printf("- scheduling for detach\n");
+					mpt2sas_prt(mpt, MP2PRT_CONFIG, "DevHandle 0x%x Departed- scheduling for detach\n", le16toh(tpl->PHY[i].AttachedDevHandle));
 					TAILQ_REMOVE(&mpt->topo_free_list, tp, links);
 					tp->hdl = le16toh(tpl->PHY[i].AttachedDevHandle);
 					tp->create = 0;
@@ -316,6 +316,7 @@
 			mpt2sas_prt(mpt, MP2PRT_CONFIG, "%s: DevHandle 0x%x delayed not responding\n", __func__, le16toh(tpl->PHY[i].AttachedDevHandle));
 			break;
 		default:
+			mpt2sas_prt(mpt, MP2PRT_WARN, "%s: unknown status %x at entry %d\n", __func__, status, i);
 			break;
 		}
 	}

==== //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2sas.h#2 (text+ko) ====

@@ -596,7 +596,8 @@
 #define	MPT2_RPF_QDEPTH(mpt)		mpt->reply_free_queue_depth
 #define	MPT2_RPQ_QDEPTH(mpt)		mpt->reply_post_queue_depth
 
-#define	MPT2_CONFIG_DATA_SIZE(mpt)	PAGE_SIZE
+#define	MPT2_CONFIG_DATA_MAX(mpt)	PAGE_SIZE	/* sum of all config data chunks */
+#define	MPT2_CONFIG_DATA_SIZE(mpt)	(PAGE_SIZE >> 9)
 #define	MPT2_SENSE_DATA_SIZE(mpt)	(MPT2_MAX_REQUESTS(mpt) * MPT2_SENSE_SIZE)
 /*
  * Convert a host request structure pointer into a SMID and vice versa


More information about the p4-projects mailing list