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
@@ -258,7 +258,8 @@ static int e1000_set_settings(struct net_device *netdev,
|
||||
* When SoL/IDER sessions are active, autoneg/speed/duplex
|
||||
* cannot be changed
|
||||
*/
|
||||
if (hw->phy.ops.check_reset_block(hw)) {
|
||||
if (hw->phy.ops.check_reset_block &&
|
||||
hw->phy.ops.check_reset_block(hw)) {
|
||||
e_err("Cannot change link characteristics when SoL/IDER is active.\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1615,7 +1616,8 @@ static int e1000_loopback_test(struct e1000_adapter *adapter, u64 *data)
|
||||
* PHY loopback cannot be performed if SoL/IDER
|
||||
* sessions are active
|
||||
*/
|
||||
if (hw->phy.ops.check_reset_block(hw)) {
|
||||
if (hw->phy.ops.check_reset_block &&
|
||||
hw->phy.ops.check_reset_block(hw)) {
|
||||
e_err("Cannot do PHY loopback test when SoL/IDER is active.\n");
|
||||
*data = 0;
|
||||
goto out;
|
||||
|
Reference in New Issue
Block a user