net/cxgbe: fix null dereference on CLIP failure
authorShagun Agrawal <shaguna@chelsio.com>
Thu, 26 Jul 2018 08:19:32 +0000 (13:49 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 2 Aug 2018 09:03:16 +0000 (11:03 +0200)
Coverity issue: 302872
Fixes: 3f2c1e209cfc ("net/cxgbe: add Compressed Local IP region")

Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
drivers/net/cxgbe/clip_tbl.c

index fa5281c..5e4dc52 100644 (file)
@@ -105,7 +105,7 @@ static struct clip_entry *t4_clip_alloc(struct rte_eth_dev *dev,
        struct adapter *adap = ethdev2adap(dev);
        struct clip_tbl *ctbl = adap->clipt;
        struct clip_entry *ce;
        struct adapter *adap = ethdev2adap(dev);
        struct clip_tbl *ctbl = adap->clipt;
        struct clip_entry *ce;
-       int ret;
+       int ret = 0;
 
        if (!ctbl)
                return NULL;
 
        if (!ctbl)
                return NULL;
@@ -120,12 +120,10 @@ static struct clip_entry *t4_clip_alloc(struct rte_eth_dev *dev,
                                ce->type = FILTER_TYPE_IPV6;
                                rte_atomic32_set(&ce->refcnt, 1);
                                ret = clip6_get_mbox(dev, lip);
                                ce->type = FILTER_TYPE_IPV6;
                                rte_atomic32_set(&ce->refcnt, 1);
                                ret = clip6_get_mbox(dev, lip);
-                               if (ret) {
+                               if (ret)
                                        dev_debug(adap,
                                                  "CLIP FW ADD CMD failed: %d",
                                                  ret);
                                        dev_debug(adap,
                                                  "CLIP FW ADD CMD failed: %d",
                                                  ret);
-                                       ce = NULL;
-                               }
                        } else {
                                ce->type = FILTER_TYPE_IPV4;
                        }
                        } else {
                                ce->type = FILTER_TYPE_IPV4;
                        }
@@ -136,7 +134,7 @@ static struct clip_entry *t4_clip_alloc(struct rte_eth_dev *dev,
        }
        t4_os_write_unlock(&ctbl->lock);
 
        }
        t4_os_write_unlock(&ctbl->lock);
 
-       return ce;
+       return ret ? NULL : ce;
 }
 
 /**
 }
 
 /**