aboutsummaryrefslogtreecommitdiffstats
path: root/lib/librte_metrics/rte_metrics.c
diff options
context:
space:
mode:
authorLuca Boccassi <luca.boccassi@gmail.com>2018-09-03 10:48:52 +0100
committerLuca Boccassi <luca.boccassi@gmail.com>2018-09-03 10:49:31 +0100
commitcbcf3d44176009673fbcd7d15671bef56c021f6b (patch)
tree03ac41bbf9f5f9f238e62de84d43dcce721b8dab /lib/librte_metrics/rte_metrics.c
parent1d9284040a0ba38d86e6eeffdb25f36eeb7a44e1 (diff)
parent6e7cbd63706f3435b9d9a2057a37db1da01db9a7 (diff)
Merge branch 'upstream-17.11-stable' into 17.11.x
Change-Id: Id5d87fa34325cf80217a1f633c9dc1808e931af8 Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
Diffstat (limited to 'lib/librte_metrics/rte_metrics.c')
-rw-r--r--lib/librte_metrics/rte_metrics.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/librte_metrics/rte_metrics.c b/lib/librte_metrics/rte_metrics.c
index d9404001..dc634467 100644
--- a/lib/librte_metrics/rte_metrics.c
+++ b/lib/librte_metrics/rte_metrics.c
@@ -124,6 +124,9 @@ rte_metrics_reg_names(const char * const *names, uint16_t cnt_names)
/* Some sanity checks */
if (cnt_names < 1 || names == NULL)
return -EINVAL;
+ for (idx_name = 0; idx_name < cnt_names; idx_name++)
+ if (names[idx_name] == NULL)
+ return -EINVAL;
memzone = rte_memzone_lookup(RTE_METRICS_MEMZONE_NAME);
if (memzone == NULL)
@@ -190,6 +193,11 @@ rte_metrics_update_values(int port_id,
stats = memzone->addr;
rte_spinlock_lock(&stats->lock);
+
+ if (key >= stats->cnt_stats) {
+ rte_spinlock_unlock(&stats->lock);
+ return -EINVAL;
+ }
idx_metric = key;
cnt_setsize = 1;
while (idx_metric < stats->cnt_stats) {
@@ -231,9 +239,8 @@ rte_metrics_get_names(struct rte_metric_name *names,
int return_value;
memzone = rte_memzone_lookup(RTE_METRICS_MEMZONE_NAME);
- /* If not allocated, fail silently */
if (memzone == NULL)
- return 0;
+ return -EIO;
stats = memzone->addr;
rte_spinlock_lock(&stats->lock);
@@ -269,9 +276,9 @@ rte_metrics_get_values(int port_id,
return -EINVAL;
memzone = rte_memzone_lookup(RTE_METRICS_MEMZONE_NAME);
- /* If not allocated, fail silently */
if (memzone == NULL)
- return 0;
+ return -EIO;
+
stats = memzone->addr;
rte_spinlock_lock(&stats->lock);