[dpdk-dev] [PATCH v2 3/3] ethdev: check more errors in xstats retrieval
Ferruh Yigit
ferruh.yigit at intel.com
Tue Oct 24 01:15:34 CEST 2017
Some function calls in xstat functions can return negative values
to indicate the error, check return values for those cases.
Coverity issue: 195028, 195026
Fixes: 8c49d5f1c219 ("ethdev: rework xstats retrieve by id")
Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
Acked-by: Thomas Monjalon <thomas at monjalon.net>
---
Cc: Lee Daly <lee.daly at intel.com>
---
lib/librte_ether/rte_ethdev.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 15ed2df10..0b13a58db 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -1648,11 +1648,16 @@ rte_eth_xstats_get_names_by_id(uint16_t port_id,
unsigned int expected_entries;
struct rte_eth_dev *dev;
unsigned int i;
+ int ret;
RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
- expected_entries = get_xstats_count(port_id);
dev = &rte_eth_devices[port_id];
+ ret = get_xstats_count(port_id);
+ if (ret < 0)
+ return ret;
+ expected_entries = (unsigned int)ret;
+
/* Return max number of stats if no ids given */
if (!ids) {
if (!xstats_names)
@@ -1796,6 +1801,7 @@ rte_eth_xstats_get_by_id(uint16_t port_id, const uint64_t *ids,
uint16_t expected_entries;
struct rte_eth_dev *dev;
unsigned int i;
+ int ret;
RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
expected_entries = get_xstats_count(port_id);
@@ -1836,8 +1842,10 @@ rte_eth_xstats_get_by_id(uint16_t port_id, const uint64_t *ids,
}
/* Fill the xstats structure */
- num_xstats_filled = rte_eth_xstats_get(port_id, xstats,
- expected_entries);
+ ret = rte_eth_xstats_get(port_id, xstats, expected_entries);
+ if (ret < 0)
+ return ret;
+ num_xstats_filled = (unsigned int)ret;
/* Return all stats */
if (!ids) {
--
2.13.6
More information about the dev
mailing list