From: Viacheslav Ovsiienko Date: Tue, 23 Oct 2018 10:04:10 +0000 (+0000) Subject: net/mlx5: fix flow counters creation X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=c4301b9caf3582b13a404bb828874065cfa34d04;p=dpdk.git net/mlx5: fix flow counters creation The Flow counter creation function contains two problems: - Flow counter object in Verbs is not freed in case of memory allocation error. The call of counter Verbs object deallocating function is added to fix. - The initial value of reference counter is set to one in order to provide the correct counter object freeing in the flow_verbs_counter_release() function. The reference counter field should be initialized to one. Fixes: 60bd8c9747e8 ("net/mlx5: add count flow action") Cc: stable@dpdk.org Signed-off-by: Viacheslav Ovsiienko --- diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c index 4ae974b072..6ddb13b717 100644 --- a/drivers/net/mlx5/mlx5_flow_verbs.c +++ b/drivers/net/mlx5/mlx5_flow_verbs.c @@ -72,6 +72,7 @@ flow_verbs_counter_new(struct rte_eth_dev *dev, uint32_t shared, uint32_t id) }), .hits = 0, .bytes = 0, + .ref_cnt = 1, }; if (!tmpl.cs) { @@ -80,6 +81,7 @@ flow_verbs_counter_new(struct rte_eth_dev *dev, uint32_t shared, uint32_t id) } cnt = rte_calloc(__func__, 1, sizeof(*cnt), 0); if (!cnt) { + claim_zero(mlx5_glue->destroy_counter_set(tmpl.cs)); rte_errno = ENOMEM; return NULL; }