net: phy: Fix use after free in phy_detach()
If device_release_driver(&phydev->mdio.dev) is called, it releases all
resources belonging to the PHY device. Hence the subsequent call to
phy_led_triggers_unregister() will access already freed memory when
unregistering the LEDs.
Move the call to phy_led_triggers_unregister() before the possible call
to device_release_driver() to fix this.
Fixes: 2e0bc452f4
("net: phy: leds: add support for led triggers on phy link state change")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Zach Brown <zach.brown@ni.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
22d3efe5f6
commit
0075bd692d
|
@ -981,6 +981,8 @@ void phy_detach(struct phy_device *phydev)
|
|||
phydev->attached_dev = NULL;
|
||||
phy_suspend(phydev);
|
||||
|
||||
phy_led_triggers_unregister(phydev);
|
||||
|
||||
/* If the device had no specific driver before (i.e. - it
|
||||
* was using the generic driver), we unbind the device
|
||||
* from the generic driver so that there's a chance a
|
||||
|
@ -994,8 +996,6 @@ void phy_detach(struct phy_device *phydev)
|
|||
}
|
||||
}
|
||||
|
||||
phy_led_triggers_unregister(phydev);
|
||||
|
||||
/*
|
||||
* The phydev might go away on the put_device() below, so avoid
|
||||
* a use-after-free bug by reading the underlying bus first.
|
||||
|
|
Loading…
Reference in New Issue