From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eelco Chaudron Subject: [PATCH v3] lib/librte_meter: fix divide by zero for RFC4115 meter Date: Tue, 19 Mar 2019 12:10:44 +0000 Message-ID: <155299743267.6865.5001245009415554669.stgit@dbuild> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org To: cristian.dumitrescu@intel.com Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 7A5E6A3 for ; Tue, 19 Mar 2019 13:10:50 +0100 (CET) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" RFC 4115 allows a meter with either cir and/or eir configured. When only one is configured a divide by zero would occur. Fixes: 655796d2b5fb ("meter: support RFC4115 trTCM") Cc: echaudro@redhat.com Signed-off-by: Eelco Chaudron --- v3 - Rather than using a 0 check, set up profile data such that no check at runtime is needed. v2 - Removed configuration change that got included by accident lib/librte_meter/rte_meter.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/librte_meter/rte_meter.c b/lib/librte_meter/rte_meter.c index e55f9be65..45679444e 100644 --- a/lib/librte_meter/rte_meter.c +++ b/lib/librte_meter/rte_meter.c @@ -19,7 +19,15 @@ static void rte_meter_get_tb_params(uint64_t hz, uint64_t rate, uint64_t *tb_period, uint64_t *tb_bytes_per_period) { - double period = ((double) hz) / ((double) rate); + double period; + + if (rate == 0) { + *tb_bytes_per_period = 0; + *tb_period = RTE_METER_TB_PERIOD_MIN; + return; + } + + period = ((double) hz) / ((double) rate); if (period >= RTE_METER_TB_PERIOD_MIN) { *tb_bytes_per_period = 1;