Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Nov 2010 21:59:08 GMT
From:      Matt Jacob <mjacob@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 186385 for review
Message-ID:  <201011282159.oASLx886015184@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@186385?ac=10

Change 186385 by mjacob@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



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