From e752649c5b558daa2fb3d19d49664a79a6c3133c Mon Sep 17 00:00:00 2001 From: Slawomir Mrozowicz Date: Fri, 13 May 2016 10:35:07 +0200 Subject: [PATCH] examples/qos_meter: check flow configuration error Calling rte_meter_srtcm_config without checking return value. Coverity issue: 30693 Fixes: e6541fdec8b2 ("meter: initial import") Signed-off-by: Slawomir Mrozowicz Acked-by: Cristian Dumitrescu --- examples/qos_meter/main.c | 16 ++++++++++++---- examples/qos_meter/main.h | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/examples/qos_meter/main.c b/examples/qos_meter/main.c index b968b0012e..1565615567 100644 --- a/examples/qos_meter/main.c +++ b/examples/qos_meter/main.c @@ -133,14 +133,20 @@ struct rte_meter_trtcm_params app_trtcm_params[] = { FLOW_METER app_flows[APP_FLOWS_MAX]; -static void +static int app_configure_flow_table(void) { uint32_t i, j; + int ret; - for (i = 0, j = 0; i < APP_FLOWS_MAX; i ++, j = (j + 1) % RTE_DIM(PARAMS)){ - FUNC_CONFIG(&app_flows[i], &PARAMS[j]); + for (i = 0, j = 0; i < APP_FLOWS_MAX; + i ++, j = (j + 1) % RTE_DIM(PARAMS)) { + ret = FUNC_CONFIG(&app_flows[i], &PARAMS[j]); + if (ret) + return ret; } + + return 0; } static inline void @@ -381,7 +387,9 @@ main(int argc, char **argv) rte_eth_promiscuous_enable(port_tx); /* App configuration */ - app_configure_flow_table(); + ret = app_configure_flow_table(); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Invalid configure flow table\n"); /* Launch per-lcore init on every lcore */ rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER); diff --git a/examples/qos_meter/main.h b/examples/qos_meter/main.h index 530bf69c73..54867dcfcf 100644 --- a/examples/qos_meter/main.h +++ b/examples/qos_meter/main.h @@ -51,7 +51,7 @@ enum policer_action policer_table[e_RTE_METER_COLORS][e_RTE_METER_COLORS] = #if APP_MODE == APP_MODE_FWD #define FUNC_METER(a,b,c,d) color, flow_id=flow_id, pkt_len=pkt_len, time=time -#define FUNC_CONFIG(a,b) +#define FUNC_CONFIG(a, b) 0 #define PARAMS app_srtcm_params #define FLOW_METER int -- 2.20.1