examples/qos_meter: check flow configuration error
authorSlawomir Mrozowicz <slawomirx.mrozowicz@intel.com>
Fri, 13 May 2016 08:35:07 +0000 (10:35 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 16 May 2016 16:49:12 +0000 (18:49 +0200)
Calling rte_meter_srtcm_config without checking return value.

Coverity issue: 30693
Fixes: e6541fdec8b2 ("meter: initial import")

Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
examples/qos_meter/main.c
examples/qos_meter/main.h

index b968b00..1565615 100644 (file)
@@ -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);
index 530bf69..54867dc 100644 (file)
@@ -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