lkml.org 
[lkml]   [2019]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.0 016/139] net/mlx5e: Additional check for flow destination comparison
    Date
    From: Dmytro Linkin <dmitrolin@mellanox.com>

    [ Upstream commit c979c445a88e1c9dd7d8f90838c10456ae4ecd09 ]

    Flow destination comparison has an inaccuracy: code see no
    difference between same vf ports, which belong to different pfs.

    Example: If start ping from VF0 (PF1) to VF1 (PF1) and mirror
    all traffic to VF0 (PF2), icmp reply to VF0 (PF1) and mirrored
    flow to VF0 (PF2) would be determined as same destination. It lead
    to creating flow handler with rule nodes, which not added to node
    tree. When later driver try to delete this flow rules we got
    kernel crash.

    Add comparison of vhca_id field to avoid this.

    Fixes: 1228e912c934 ("net/mlx5: Consider encapsulation properties when comparing destinations")
    Signed-off-by: Dmytro Linkin <dmitrolin@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Vlad Buslov <vladbu@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 2 ++
    1 file changed, 2 insertions(+)

    --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
    @@ -1375,6 +1375,8 @@ static bool mlx5_flow_dests_cmp(struct m
    if ((d1->type == MLX5_FLOW_DESTINATION_TYPE_VPORT &&
    d1->vport.num == d2->vport.num &&
    d1->vport.flags == d2->vport.flags &&
    + ((d1->vport.flags & MLX5_FLOW_DEST_VPORT_VHCA_ID) ?
    + (d1->vport.vhca_id == d2->vport.vhca_id) : true) &&
    ((d1->vport.flags & MLX5_FLOW_DEST_VPORT_REFORMAT_ID) ?
    (d1->vport.reformat_id == d2->vport.reformat_id) : true)) ||
    (d1->type == MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE &&

    \
     
     \ /
      Last update: 2019-05-23 22:09    [W:4.110 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site