Message ID | 20230628005934.1524909-1-shaozhengchao@huawei.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [net] net/mlx5e: fix double free in mlx5e_destroy_flow_table | expand |
On Wed, Jun 28, 2023 at 08:59:34AM +0800, Zhengchao Shao wrote: > In function accel_fs_tcp_create_groups(), when the ft->g memory is > successfully allocated but the 'in' memory fails to be allocated, the > memory pointed to by ft->g is released once. And in function > accel_fs_tcp_create_table, mlx5e_destroy_flow_table is called to release > the memory pointed to by ft->g again. This will cause double free problem. > > Fixes: c062d52ac24c ("net/mlx5e: Receive flow steering framework for accelerated TCP flows") > Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com> Reviewed-by: Simon Horman <simon.horman@corigine.com>
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c index 88a5aed9d678..c7d191f66ad1 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c @@ -190,6 +190,7 @@ static int accel_fs_tcp_create_groups(struct mlx5e_flow_table *ft, in = kvzalloc(inlen, GFP_KERNEL); if (!in || !ft->g) { kfree(ft->g); + ft->g = NULL; kvfree(in); return -ENOMEM; }
In function accel_fs_tcp_create_groups(), when the ft->g memory is successfully allocated but the 'in' memory fails to be allocated, the memory pointed to by ft->g is released once. And in function accel_fs_tcp_create_table, mlx5e_destroy_flow_table is called to release the memory pointed to by ft->g again. This will cause double free problem. Fixes: c062d52ac24c ("net/mlx5e: Receive flow steering framework for accelerated TCP flows") Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com> --- drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c | 1 + 1 file changed, 1 insertion(+)