Revert "net: mdio_bus: Use devm for getting reset GPIO"
This reverts commit3b98c93525. Russell says: Using devm_*() [here] is completely wrong, because this is called from mdiobus_register_device(). This is not the probe function for the device, and thus there is no code to trigger the release of the resource on unregistration. Moreover, when the mdiodev is eventually probed, if the driver fails or the driver is unbound, the GPIO will be released, but a reference will be left behind. Using devm* with a struct device that is *not* currently being probed is fundamentally wrong - an abuse of devm. Reported-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/95449490-fa58-41d4-9493-c9213c1f2e7d@sirena.org.uk Suggested-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Fixes:3b98c93525("net: mdio_bus: Use devm for getting reset GPIO") Link: https://patch.msgid.link/20250801212742.2607149-1-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -36,8 +36,8 @@
|
||||
static int mdiobus_register_gpiod(struct mdio_device *mdiodev)
|
||||
{
|
||||
/* Deassert the optional reset signal */
|
||||
mdiodev->reset_gpio = devm_gpiod_get_optional(&mdiodev->dev,
|
||||
"reset", GPIOD_OUT_LOW);
|
||||
mdiodev->reset_gpio = gpiod_get_optional(&mdiodev->dev,
|
||||
"reset", GPIOD_OUT_LOW);
|
||||
if (IS_ERR(mdiodev->reset_gpio))
|
||||
return PTR_ERR(mdiodev->reset_gpio);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user