From: Suanming Mou Date: Mon, 13 Apr 2020 13:29:13 +0000 (+0800) Subject: net/mlx5: fix jump table leak X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=fe2c412ca935fb6e14605795243b85aac5778455;p=dpdk.git net/mlx5: fix jump table leak Currently, when translate jump action, the table reference will be increased all the time. But when release the jump action, the table resource reference will only be decreased when jump action is released. It means for jump action which was referenced more than one time, the increased table reference only decrease one time when jump action is released. Add table release when the jump action was not new created. Fixes: 684b9a1b1f5c ("net/mlx5: support jump action") Cc: stable@dpdk.org Signed-off-by: Suanming Mou Acked-by: Viacheslav Ovsiienko --- diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 0676b6f203..e87e30f65f 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -73,6 +73,10 @@ union flow_dv_attr { uint32_t attr; }; +static int +flow_dv_tbl_resource_release(struct rte_eth_dev *dev, + struct mlx5_flow_tbl_resource *tbl); + /** * Initialize flow attributes structure according to flow items' types. * @@ -2530,6 +2534,8 @@ flow_dv_jump_tbl_resource_register DRV_LOG(DEBUG, "new jump table resource %p: refcnt %d++", (void *)&tbl_data->jump, cnt); } else { + /* old jump should not make the table ref++. */ + flow_dv_tbl_resource_release(dev, &tbl_data->tbl); MLX5_ASSERT(tbl_data->jump.action); DRV_LOG(DEBUG, "existed jump table resource %p: refcnt %d++", (void *)&tbl_data->jump, cnt);