Messages in this thread | | | Date | Tue, 28 Sep 2021 16:41:36 +0100 | From | "Russell King (Oracle)" <> | Subject | Re: [PATCH] net: mdiobus: Fix memory leak in __mdiobus_register |
| |
On Tue, Sep 28, 2021 at 04:52:07PM +0300, Dan Carpenter wrote: > On Tue, Sep 28, 2021 at 01:58:00PM +0100, Russell King (Oracle) wrote: > > > > This thread seems to be getting out of hand. > > The thread was closed. We need to revert Yanfei's patch and apply > Pavel's patch. He's going to resend. > > > So, I would suggest a simple fix is to set bus->state to > > MDIOBUS_UNREGISTERED immediately _after_ the successful > > device_register(). > > Not after. It has to be set to MDIOBUS_UNREGISTERED if device_register() > fails, otherwise there will still be a leak.
Ah yes, you are correct - the device name may not be freed. Also...
* NOTE: _Never_ directly free @dev after calling this function, even * if it returned an error! Always use put_device() to give up your * reference instead.
So yes, we must set to MDIOBUS_UNREGISTERED even if device_register() fails.
-- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
| |