net/mlx5: fix flow counters creation
authorViacheslav Ovsiienko <viacheslavo@mellanox.com>
Tue, 23 Oct 2018 10:04:10 +0000 (10:04 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 26 Oct 2018 20:14:06 +0000 (22:14 +0200)
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 <viacheslavo@mellanox.com>
drivers/net/mlx5/mlx5_flow_verbs.c

index 4ae974b..6ddb13b 100644 (file)
@@ -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;
        }