In mlx5_cmd_invoke(), 'ent' is allocated through kzalloc() in alloc_cmd(). After the work is queued, wait_func() is invoked to wait the completion of the work. If wait_func() returns -ETIMEDOUT, the following execution will be terminated. However, the allocated 'ent' is not deallocated on this program path, leading to a memory leak bug. To fix the above issue, free 'ent' before returning the error. Signed-off-by: Wenwen Wang <wenwen@xxxxxxxxxx> --- drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c index 8cdd7e6..90cdb9a 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c @@ -1036,7 +1036,7 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in, err = wait_func(dev, ent); if (err == -ETIMEDOUT) - goto out; + goto out_free; ds = ent->ts2 - ent->ts1; op = MLX5_GET(mbox_in, in->first.data, opcode); -- 2.7.4