e1000e: test for valid check_reset_block function pointer
commit 44abd5c127
introduced NULL pointer
dereferences when attempting to access the check_reset_block function
pointer on 8257x and 80003es2lan non-copper devices.
This fix should be applied back through 3.4.
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:

committed by
Jeff Kirsher

parent
dc5cd894ca
commit
470a54207c
@@ -6237,7 +6237,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
|
||||
adapter->hw.phy.ms_type = e1000_ms_hw_default;
|
||||
}
|
||||
|
||||
if (hw->phy.ops.check_reset_block(hw))
|
||||
if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw))
|
||||
e_info("PHY reset is blocked due to SOL/IDER session.\n");
|
||||
|
||||
/* Set initial default active device features */
|
||||
@@ -6404,7 +6404,7 @@ err_register:
|
||||
if (!(adapter->flags & FLAG_HAS_AMT))
|
||||
e1000e_release_hw_control(adapter);
|
||||
err_eeprom:
|
||||
if (!hw->phy.ops.check_reset_block(hw))
|
||||
if (hw->phy.ops.check_reset_block && !hw->phy.ops.check_reset_block(hw))
|
||||
e1000_phy_hw_reset(&adapter->hw);
|
||||
err_hw_init:
|
||||
kfree(adapter->tx_ring);
|
||||
|
Reference in New Issue
Block a user