The function mlx4_drop_get() creates pointer to a struct mlx4_drop and if needed allocates by rte_malloc.
If the allocation is failed the function goes to label “error”, and there does dereference to a null pointer. Skip resources cleaning when the memory allocation is failed. Coverity issue: 146206 Coverity issue: 146146 Fixes: d3a7e09234e4 ("net/mlx4: allocate drop flow resources on demand") Cc: sta...@dpdk.org Signed-off-by: Michael Baum <michae...@mellanox.com> Acked-by: Matan Azrad <ma...@mellanox.com> --- drivers/net/mlx4/mlx4_flow.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c index 793f0b0..2a86382 100644 --- a/drivers/net/mlx4/mlx4_flow.c +++ b/drivers/net/mlx4/mlx4_flow.c @@ -980,12 +980,13 @@ struct mlx4_drop { priv->drop = drop; return drop; error: - if (drop->qp) - claim_zero(mlx4_glue->destroy_qp(drop->qp)); - if (drop->cq) - claim_zero(mlx4_glue->destroy_cq(drop->cq)); - if (drop) + if (drop) { + if (drop->qp) + claim_zero(mlx4_glue->destroy_qp(drop->qp)); + if (drop->cq) + claim_zero(mlx4_glue->destroy_cq(drop->cq)); rte_free(drop); + } rte_errno = ENOMEM; return NULL; } -- 1.8.3.1