| From foo@baz Mon 17 Aug 2020 11:30:21 AM CEST |
| From: Johan Hovold <johan@kernel.org> |
| Date: Thu, 6 Aug 2020 17:37:53 +0200 |
| Subject: net: phy: fix memory leak in device-create error path |
| |
| From: Johan Hovold <johan@kernel.org> |
| |
| [ Upstream commit d02cbc46136105cf86f84ac355e16f04696f538d ] |
| |
| A recent commit introduced a late error path in phy_device_create() |
| which fails to release the device name allocated by dev_set_name(). |
| |
| Fixes: 13d0ab6750b2 ("net: phy: check return code when requesting PHY driver module") |
| Cc: Heiner Kallweit <hkallweit1@gmail.com> |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/phy/phy_device.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/net/phy/phy_device.c |
| +++ b/drivers/net/phy/phy_device.c |
| @@ -616,7 +616,9 @@ struct phy_device *phy_device_create(str |
| if (c45_ids) |
| dev->c45_ids = *c45_ids; |
| dev->irq = bus->irq[addr]; |
| + |
| dev_set_name(&mdiodev->dev, PHY_ID_FMT, bus->id, addr); |
| + device_initialize(&mdiodev->dev); |
| |
| dev->state = PHY_DOWN; |
| |
| @@ -650,10 +652,8 @@ struct phy_device *phy_device_create(str |
| ret = phy_request_driver_module(dev, phy_id); |
| } |
| |
| - if (!ret) { |
| - device_initialize(&mdiodev->dev); |
| - } else { |
| - kfree(dev); |
| + if (ret) { |
| + put_device(&mdiodev->dev); |
| dev = ERR_PTR(ret); |
| } |
| |