From: Mark Rustad Date: Sat, 1 Mar 2014 05:21:00 +0000 (+0000) Subject: ixgbe: Break recursion in case of removal X-Git-Tag: v3.15-rc1~113^2~97^2~11 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=19458bd425c0ee21bb35958c60d3682f9c42f274;p=linux.git ixgbe: Break recursion in case of removal When an adapter is removed and registers all read as all one's, an infinite recursion can happen between ixgbe_clear_vmdq_generic and ixgbe_clear_rar_generic. Adding a check for removal breaks this recursion. Signed-off-by: Mark Rustad Tested-by: Phil Schmitt Signed-off-by: Jeff Kirsher --- diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c index 911b711b6ba1..24fba39e194e 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c @@ -2913,6 +2913,9 @@ s32 ixgbe_clear_vmdq_generic(struct ixgbe_hw *hw, u32 rar, u32 vmdq) mpsar_lo = IXGBE_READ_REG(hw, IXGBE_MPSAR_LO(rar)); mpsar_hi = IXGBE_READ_REG(hw, IXGBE_MPSAR_HI(rar)); + if (ixgbe_removed(hw->hw_addr)) + goto done; + if (!mpsar_lo && !mpsar_hi) goto done;