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 &&
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to