examples/l3fwd-power: fix metrics divisions
authorDavid Hunt <david.hunt@intel.com>
Wed, 10 Jul 2019 15:26:20 +0000 (16:26 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 10 Jul 2019 22:00:46 +0000 (00:00 +0200)
6 issues caught by Coverity 343465
* Possible divide by zero on 3 lines
* Convert to float then back to int, losing precision on 3 lines

This patch modifies the code so that it only assigns calculated
values if the divisor is > 0, otherwise sets metrics to zero.
Also removes the un-needed round() function.

Coverity issue: 343465
Fixes: 609e79841fcf ("examples/l3fwd-power: add telemetry mode")

Signed-off-by: David Hunt <david.hunt@intel.com>
examples/l3fwd-power/main.c

index 99c1208..7a95605 100644 (file)
@@ -2100,9 +2100,16 @@ update_telemetry(__attribute__((unused)) struct rte_timer *tim,
                rte_spinlock_unlock(&stats[lcore_id].telemetry_lock);
        }
 
-       values[0] = round(app_eps/count);
-       values[1] = round(app_fps/count);
-       values[2] = round(app_br/count);
+       if (count > 0) {
+               values[0] = app_eps/count;
+               values[1] = app_fps/count;
+               values[2] = app_br/count;
+       } else {
+               values[0] = 0;
+               values[1] = 0;
+               values[2] = 0;
+       }
+
        ret = rte_metrics_update_values(RTE_METRICS_GLOBAL, telstats_index,
                                        values, RTE_DIM(values));
        if (ret < 0)