]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: mdio: fix resource leak in mdiobus_register_device()
authorBuday Csaba <buday.csaba@prolan.hu>
Sat, 8 Nov 2025 06:49:22 +0000 (07:49 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Nov 2025 09:35:51 +0000 (10:35 +0100)
[ Upstream commit e6ca8f533ed41129fcf052297718f417f021cc7d ]

Fix a possible leak in mdiobus_register_device() when both a
reset-gpio and a reset-controller are present.
Clean up the already claimed reset-gpio, when the registration of
the reset-controller fails, so when an error code is returned, the
device retains its state before the registration attempt.

Link: https://lore.kernel.org/all/20251106144603.39053c81@kernel.org/
Fixes: 71dd6c0dff51 ("net: phy: add support for reset-controller")
Signed-off-by: Buday Csaba <buday.csaba@prolan.hu>
Link: https://patch.msgid.link/4b419377f8dd7d2f63f919d0f74a336c734f8fff.1762584481.git.buday.csaba@prolan.hu
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/phy/mdio_bus.c

index a508cd81cd4ed9a9245dcf799579bbe0d470e3ea..d80b80ba20a1de460344d698a994623d3a0b8a2d 100644 (file)
@@ -79,8 +79,11 @@ int mdiobus_register_device(struct mdio_device *mdiodev)
                        return err;
 
                err = mdiobus_register_reset(mdiodev);
-               if (err)
+               if (err) {
+                       gpiod_put(mdiodev->reset_gpio);
+                       mdiodev->reset_gpio = NULL;
                        return err;
+               }
 
                /* Assert the reset signal */
                mdio_device_reset(mdiodev, 1);