diff options
author | Mark Rustad <mark.d.rustad@intel.com> | 2014-03-04 03:02:40 +0000 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2014-03-21 02:28:20 -0700 |
commit | 984b0ee3e3bd1c2d6c955f9121d60bbfd96c399d (patch) | |
tree | d223cd8f7537fd3b79a6a962a2d6b7f125f263b4 /drivers/net | |
parent | dbf8b0d891bd3e0436ca17530c372b6b51d6ddab (diff) |
ixgbevf: Check for adapter removal on register writes
Prevent writes to an adapter that has been detected as removed
by a previous failing read.
Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/vf.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/ixgbevf/vf.h b/drivers/net/ethernet/intel/ixgbevf/vf.h index 7cb1a520e561..096d33a59def 100644 --- a/drivers/net/ethernet/intel/ixgbevf/vf.h +++ b/drivers/net/ethernet/intel/ixgbevf/vf.h @@ -178,7 +178,11 @@ struct ixgbevf_info { static inline void ixgbe_write_reg(struct ixgbe_hw *hw, u32 reg, u32 value) { - writel(value, hw->hw_addr + reg); + u8 __iomem *reg_addr = ACCESS_ONCE(hw->hw_addr); + + if (IXGBE_REMOVED(reg_addr)) + return; + writel(value, reg_addr + reg); } #define IXGBE_WRITE_REG(h, r, v) ixgbe_write_reg(h, r, v) |