lkml.org 
[lkml]   [2018]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.18 20/56] bnx2x: Fix invalid memory access in rss hash config path.
    Date
    3.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com>

    [ Upstream commit ae2dcb28c24794a87e424a726a1cf1a61980f52d ]

    Rx hash/filter table configuration uses rss_conf_obj to configure filters
    in the hardware. This object is initialized only when the interface is
    brought up.
    This patch adds driver changes to configure rss params only when the device
    is in opened state. In port disabled case, the config will be cached in the
    driver structure which will be applied in the successive load path.

    Please consider applying it to 'net' branch.

    Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 13 ++++++++++---
    1 file changed, 10 insertions(+), 3 deletions(-)

    --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
    +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
    @@ -3296,14 +3296,18 @@ static int bnx2x_set_rss_flags(struct bn
    DP(BNX2X_MSG_ETHTOOL,
    "rss re-configured, UDP 4-tupple %s\n",
    udp_rss_requested ? "enabled" : "disabled");
    - return bnx2x_rss(bp, &bp->rss_conf_obj, false, true);
    + if (bp->state == BNX2X_STATE_OPEN)
    + return bnx2x_rss(bp, &bp->rss_conf_obj, false,
    + true);
    } else if ((info->flow_type == UDP_V6_FLOW) &&
    (bp->rss_conf_obj.udp_rss_v6 != udp_rss_requested)) {
    bp->rss_conf_obj.udp_rss_v6 = udp_rss_requested;
    DP(BNX2X_MSG_ETHTOOL,
    "rss re-configured, UDP 4-tupple %s\n",
    udp_rss_requested ? "enabled" : "disabled");
    - return bnx2x_rss(bp, &bp->rss_conf_obj, false, true);
    + if (bp->state == BNX2X_STATE_OPEN)
    + return bnx2x_rss(bp, &bp->rss_conf_obj, false,
    + true);
    }
    return 0;

    @@ -3401,7 +3405,10 @@ static int bnx2x_set_rxfh(struct net_dev
    bp->rss_conf_obj.ind_table[i] = indir[i] + bp->fp->cl_id;
    }

    - return bnx2x_config_rss_eth(bp, false);
    + if (bp->state == BNX2X_STATE_OPEN)
    + return bnx2x_config_rss_eth(bp, false);
    +
    + return 0;
    }

    /**

    \
     
     \ /
      Last update: 2018-09-03 19:01    [W:5.333 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site