svn commit: r346882 - in stable/11/sys/dev/cxgbe: . common tom

Navdeep Parhar np at FreeBSD.org
Mon Apr 29 05:26:30 UTC 2019


Author: np
Date: Mon Apr 29 05:26:27 2019
New Revision: 346882
URL: https://svnweb.freebsd.org/changeset/base/346882

Log:
  MFC r338156, r338158-r338161, r338166.
  
  r338156:
  cxgbe(4): Avoid overflow while calculating channel rate.
  
  Reported by:	Coverity (CID 1008352)
  
  r338158:
  cxgbe(4): Check the RO bit properly before disabling relaxed ordering.
  
  Reported by:	Coverity (CID 1384286)
  
  r338159:
  cxgbe(4): Make it clear that VI_INIT_DONE implies vi->ntxq > 0, and so
  rc will never be returned uninitialized.
  
  Reported by:	Coverity (CID 1394884).  This is a false positive though.
  
  r338160:
  cxgbe(4): Do not leak memory in case of errors during VI initialization.
  
  Reported by:	Coverity (CID 1392026)
  
  r338161:
  cxgbe/tom: Make sure 'matched' is always initialized before use.
  
  Reported by:	Coverity (CID 1390894)
  
  r338166:
  cxgbe(4): Be explicit about ignoring the return value of cmpset in some
  cases.
  
  Reported by:	Coverity (CIDs 1009398, 1009400, 1009401, 1357325, 1394783).  All false positives.

Modified:
  stable/11/sys/dev/cxgbe/common/t4_hw.c
  stable/11/sys/dev/cxgbe/t4_main.c
  stable/11/sys/dev/cxgbe/t4_netmap.c
  stable/11/sys/dev/cxgbe/t4_sched.c
  stable/11/sys/dev/cxgbe/t4_sge.c
  stable/11/sys/dev/cxgbe/tom/t4_tom.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/cxgbe/common/t4_hw.c
==============================================================================
--- stable/11/sys/dev/cxgbe/common/t4_hw.c	Mon Apr 29 05:02:54 2019	(r346881)
+++ stable/11/sys/dev/cxgbe/common/t4_hw.c	Mon Apr 29 05:26:27 2019	(r346882)
@@ -5854,7 +5854,7 @@ int t4_set_sched_ipg(struct adapter *adap, int sched, 
  */
 static u64 chan_rate(struct adapter *adap, unsigned int bytes256)
 {
-	u64 v = bytes256 * adap->params.vpd.cclk;
+	u64 v = (u64)bytes256 * adap->params.vpd.cclk;
 
 	return v * 62 + v / 2;
 }

Modified: stable/11/sys/dev/cxgbe/t4_main.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_main.c	Mon Apr 29 05:02:54 2019	(r346881)
+++ stable/11/sys/dev/cxgbe/t4_main.c	Mon Apr 29 05:26:27 2019	(r346882)
@@ -953,7 +953,7 @@ t4_attach(device_t dev)
 		v = pci_read_config(dev, i + PCIER_DEVICE_CTL, 2);
 		sc->params.pci.mps = 128 << ((v & PCIEM_CTL_MAX_PAYLOAD) >> 5);
 		if (pcie_relaxed_ordering == 0 &&
-		    (v | PCIEM_CTL_RELAXED_ORD_ENABLE) != 0) {
+		    (v & PCIEM_CTL_RELAXED_ORD_ENABLE) != 0) {
 			v &= ~PCIEM_CTL_RELAXED_ORD_ENABLE;
 			pci_write_config(dev, i + PCIER_DEVICE_CTL, v, 2);
 		} else if (pcie_relaxed_ordering == 1 &&
@@ -5265,6 +5265,7 @@ vi_full_init(struct vi_info *vi)
 	rc = -t4_config_rss_range(sc, sc->mbox, vi->viid, 0, vi->rss_size, rss,
 	    vi->rss_size);
 	if (rc != 0) {
+		free(rss, M_CXGBE);
 		if_printf(ifp, "rss_config failed: %d\n", rc);
 		goto done;
 	}
@@ -5313,6 +5314,7 @@ vi_full_init(struct vi_info *vi)
 #endif
 	rc = -t4_config_vi_rss(sc, sc->mbox, vi->viid, hashen, rss[0], 0, 0);
 	if (rc != 0) {
+		free(rss, M_CXGBE);
 		if_printf(ifp, "rss hash/defaultq config failed: %d\n", rc);
 		goto done;
 	}

Modified: stable/11/sys/dev/cxgbe/t4_netmap.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_netmap.c	Mon Apr 29 05:02:54 2019	(r346881)
+++ stable/11/sys/dev/cxgbe/t4_netmap.c	Mon Apr 29 05:26:27 2019	(r346882)
@@ -361,7 +361,7 @@ cxgbe_netmap_on(struct adapter *sc, struct vi_info *vi
 		t4_write_reg(sc, sc->sge_kdoorbell_reg,
 		    nm_rxq->fl_db_val | V_PIDX(j));
 
-		atomic_cmpset_int(&nm_rxq->nm_state, NM_OFF, NM_ON);
+		(void) atomic_cmpset_int(&nm_rxq->nm_state, NM_OFF, NM_ON);
 	}
 
 	for_each_nm_txq(vi, i, nm_txq) {

Modified: stable/11/sys/dev/cxgbe/t4_sched.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_sched.c	Mon Apr 29 05:02:54 2019	(r346881)
+++ stable/11/sys/dev/cxgbe/t4_sched.c	Mon Apr 29 05:26:27 2019	(r346882)
@@ -393,6 +393,7 @@ t4_set_sched_queue(struct adapter *sc, struct t4_sched
 	/* Checking VI_INIT_DONE outside a synch-op is a harmless race here. */
 	if (!(vi->flags & VI_INIT_DONE))
 		return (EAGAIN);
+	MPASS(vi->ntxq > 0);
 
 	if (!in_range(p->queue, 0, vi->ntxq - 1) ||
 	    !in_range(p->cl, 0, sc->chip_params->nsched_cls - 1))

Modified: stable/11/sys/dev/cxgbe/t4_sge.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_sge.c	Mon Apr 29 05:02:54 2019	(r346881)
+++ stable/11/sys/dev/cxgbe/t4_sge.c	Mon Apr 29 05:26:27 2019	(r346882)
@@ -1349,7 +1349,7 @@ t4_intr_evt(void *arg)
 
 	if (atomic_cmpset_int(&iq->state, IQS_IDLE, IQS_BUSY)) {
 		service_iq(iq, 0);
-		atomic_cmpset_int(&iq->state, IQS_BUSY, IQS_IDLE);
+		(void) atomic_cmpset_int(&iq->state, IQS_BUSY, IQS_IDLE);
 	}
 }
 
@@ -1363,7 +1363,7 @@ t4_intr(void *arg)
 
 	if (atomic_cmpset_int(&iq->state, IQS_IDLE, IQS_BUSY)) {
 		service_iq_fl(iq, 0);
-		atomic_cmpset_int(&iq->state, IQS_BUSY, IQS_IDLE);
+		(void) atomic_cmpset_int(&iq->state, IQS_BUSY, IQS_IDLE);
 	}
 }
 
@@ -1378,7 +1378,7 @@ t4_nm_intr(void *arg)
 
 	if (atomic_cmpset_int(&nm_rxq->nm_state, NM_ON, NM_BUSY)) {
 		service_nm_rxq(nm_rxq);
-		atomic_cmpset_int(&nm_rxq->nm_state, NM_BUSY, NM_ON);
+		(void) atomic_cmpset_int(&nm_rxq->nm_state, NM_BUSY, NM_ON);
 	}
 }
 
@@ -1464,7 +1464,7 @@ service_iq(struct sge_iq *iq, int budget)
 				if (atomic_cmpset_int(&q->state, IQS_IDLE,
 				    IQS_BUSY)) {
 					if (service_iq_fl(q, q->qsize / 16) == 0) {
-						atomic_cmpset_int(&q->state,
+						(void) atomic_cmpset_int(&q->state,
 						    IQS_BUSY, IQS_IDLE);
 					} else {
 						STAILQ_INSERT_TAIL(&iql, q,
@@ -1512,7 +1512,7 @@ service_iq(struct sge_iq *iq, int budget)
 		q = STAILQ_FIRST(&iql);
 		STAILQ_REMOVE_HEAD(&iql, link);
 		if (service_iq_fl(q, q->qsize / 8) == 0)
-			atomic_cmpset_int(&q->state, IQS_BUSY, IQS_IDLE);
+			(void) atomic_cmpset_int(&q->state, IQS_BUSY, IQS_IDLE);
 		else
 			STAILQ_INSERT_TAIL(&iql, q, link);
 	}

Modified: stable/11/sys/dev/cxgbe/tom/t4_tom.c
==============================================================================
--- stable/11/sys/dev/cxgbe/tom/t4_tom.c	Mon Apr 29 05:02:54 2019	(r346881)
+++ stable/11/sys/dev/cxgbe/tom/t4_tom.c	Mon Apr 29 05:26:27 2019	(r346882)
@@ -1263,6 +1263,7 @@ lookup_offload_policy(struct adapter *sc, int open_typ
 	if (pkt == NULL || pktlen == 0 || buflen == 0)
 		return (&disallow_offloading_settings);
 
+	matched = 0;
 	r = &op->rule[0];
 	for (i = 0; i < op->nrules; i++, r++) {
 		if (r->open_type != open_type &&


More information about the svn-src-all mailing list