lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 771/846] mlx5: Dont accidentally set RTO_ONLINK before mlx5e_route_lookup_ipv4_get()
    Date
    From: Guillaume Nault <gnault@redhat.com>

    commit 48d67543e01d73292e0bb66d3f10fc422e79e031 upstream.

    Mask the ECN bits before calling mlx5e_route_lookup_ipv4_get(). The
    tunnel key might have the last ECN bit set. This interferes with the
    route lookup process as ip_route_output_key_hash() interpretes this bit
    specially (to restrict the route scope).

    Found by code inspection, compile tested only.

    Fixes: c7b9038d8af6 ("net/mlx5e: TC preparation refactoring for routing update event")
    Fixes: 9a941117fb76 ("net/mlx5e: Maximize ip tunnel key usage on the TC offloading path")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
    @@ -1,6 +1,7 @@
    /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
    /* Copyright (c) 2018 Mellanox Technologies. */

    +#include <net/inet_ecn.h>
    #include <net/vxlan.h>
    #include <net/gre.h>
    #include <net/geneve.h>
    @@ -229,7 +230,7 @@ int mlx5e_tc_tun_create_header_ipv4(stru
    int err;

    /* add the IP fields */
    - attr.fl.fl4.flowi4_tos = tun_key->tos;
    + attr.fl.fl4.flowi4_tos = tun_key->tos & ~INET_ECN_MASK;
    attr.fl.fl4.daddr = tun_key->u.ipv4.dst;
    attr.fl.fl4.saddr = tun_key->u.ipv4.src;
    attr.ttl = tun_key->ttl;
    @@ -344,7 +345,7 @@ int mlx5e_tc_tun_update_header_ipv4(stru
    int err;

    /* add the IP fields */
    - attr.fl.fl4.flowi4_tos = tun_key->tos;
    + attr.fl.fl4.flowi4_tos = tun_key->tos & ~INET_ECN_MASK;
    attr.fl.fl4.daddr = tun_key->u.ipv4.dst;
    attr.fl.fl4.saddr = tun_key->u.ipv4.src;
    attr.ttl = tun_key->ttl;

    \
     
     \ /
      Last update: 2022-01-24 23:09    [W:4.438 / U:1.568 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site