lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 061/452] net/mlx5: fs, delete the FTE when there are no rules attached to it
    Date
    From: Mark Bloch <mbloch@nvidia.com>

    [ Upstream commit 7b0c6338597613f465d131bd939a51844a00455a ]

    When an FTE has no children is means all the rules where removed
    and the FTE can be deleted regardless of the dests_size value.
    While dests_size should be 0 when there are no children
    be extra careful not to leak memory or get firmware syndrome
    if the proper bookkeeping of dests_size wasn't done.

    Signed-off-by: Mark Bloch <mbloch@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
    index 55772f0cbbf8..15472fb15d7d 100644
    --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
    @@ -2024,16 +2024,16 @@ void mlx5_del_flow_rules(struct mlx5_flow_handle *handle)
    down_write_ref_node(&fte->node, false);
    for (i = handle->num_rules - 1; i >= 0; i--)
    tree_remove_node(&handle->rule[i]->node, true);
    - if (fte->dests_size) {
    - if (fte->modify_mask)
    - modify_fte(fte);
    - up_write_ref_node(&fte->node, false);
    - } else if (list_empty(&fte->node.children)) {
    + if (list_empty(&fte->node.children)) {
    del_hw_fte(&fte->node);
    /* Avoid double call to del_hw_fte */
    fte->node.del_hw_func = NULL;
    up_write_ref_node(&fte->node, false);
    tree_put_node(&fte->node, false);
    + } else if (fte->dests_size) {
    + if (fte->modify_mask)
    + modify_fte(fte);
    + up_write_ref_node(&fte->node, false);
    } else {
    up_write_ref_node(&fte->node, false);
    }
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-07 19:26    [W:4.038 / U:0.864 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site