lkml.org 
[lkml]   [2019]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 044/115] ixgbe: Fix crash with VFs and flow director on interface flap
    Date
    From: Radoslaw Tyl <radoslawx.tyl@intel.com>

    [ Upstream commit 5d826d209164b0752c883607be4cdbbcf7cab494 ]

    This patch fix crash when we have restore flow director filters after reset
    adapter. In ixgbe_fdir_filter_restore() filter->action is outside of the
    rx_ring array, as it has a VF identifier in the upper 32 bits.

    Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
    index d1472727ef882..4801d96c4fa91 100644
    --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
    +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
    @@ -5129,6 +5129,7 @@ static void ixgbe_fdir_filter_restore(struct ixgbe_adapter *adapter)
    struct ixgbe_hw *hw = &adapter->hw;
    struct hlist_node *node2;
    struct ixgbe_fdir_filter *filter;
    + u64 action;

    spin_lock(&adapter->fdir_perfect_lock);

    @@ -5137,12 +5138,17 @@ static void ixgbe_fdir_filter_restore(struct ixgbe_adapter *adapter)

    hlist_for_each_entry_safe(filter, node2,
    &adapter->fdir_filter_list, fdir_node) {
    + action = filter->action;
    + if (action != IXGBE_FDIR_DROP_QUEUE && action != 0)
    + action =
    + (action >> ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF) - 1;
    +
    ixgbe_fdir_write_perfect_filter_82599(hw,
    &filter->filter,
    filter->sw_idx,
    - (filter->action == IXGBE_FDIR_DROP_QUEUE) ?
    + (action == IXGBE_FDIR_DROP_QUEUE) ?
    IXGBE_FDIR_DROP_QUEUE :
    - adapter->rx_ring[filter->action]->reg_idx);
    + adapter->rx_ring[action]->reg_idx);
    }

    spin_unlock(&adapter->fdir_perfect_lock);
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-11-13 03:13    [W:2.393 / U:0.156 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site