common/mlx5: fix freeing on flex parser creation failure
authorMichael Baum <michaelba@nvidia.com>
Wed, 11 Nov 2020 07:36:48 +0000 (07:36 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Sat, 14 Nov 2020 00:36:19 +0000 (01:36 +0100)
The mlx5_devx_cmd_create_flex_parser function defines a local array
(with constant size) named in, and then allocates a pointer to
mlx5_devx_obj structure by the mlx5_malloc function.

If the allocation fails, the function releases the array in and returns
NULL. However, the array has been defined locally on the stack and the
mlx5_free function is not required to release it.

Remove the call to the mlx5_free function.

Fixes: 66914d19d135 ("common/mlx5: convert control path memory to unified malloc")
Cc: stable@dpdk.org
Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
drivers/common/mlx5/mlx5_devx_cmds.c

index 5998c4b..9c1d188 100644 (file)
@@ -530,15 +530,13 @@ mlx5_devx_cmd_create_flex_parser(void *ctx,
        void *sample = MLX5_ADDR_OF(parse_graph_flex, flex, sample_table);
        void *in_arc = MLX5_ADDR_OF(parse_graph_flex, flex, input_arc);
        void *out_arc = MLX5_ADDR_OF(parse_graph_flex, flex, output_arc);
-       struct mlx5_devx_obj *parse_flex_obj = NULL;
+       struct mlx5_devx_obj *parse_flex_obj = mlx5_malloc
+                    (MLX5_MEM_ZERO, sizeof(*parse_flex_obj), 0, SOCKET_ID_ANY);
        uint32_t i;
 
-       parse_flex_obj = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*parse_flex_obj), 0,
-                                    SOCKET_ID_ANY);
        if (!parse_flex_obj) {
-               DRV_LOG(ERR, "Failed to allocate flex parser data");
+               DRV_LOG(ERR, "Failed to allocate flex parser data.");
                rte_errno = ENOMEM;
-               mlx5_free(in);
                return NULL;
        }
        MLX5_SET(general_obj_in_cmd_hdr, hdr, opcode,