Thread (12 messages) 12 messages, 5 authors, 2015-09-25

Re: [PATCH v3 0/9] Phy, mdiobus, and netdev struct device fixes

From: Russell King - ARM Linux <hidden>
Date: 2015-09-24 23:12:41
Also in: linux-arm-kernel, linux-devicetree, lkml, netdev

On Thu, Sep 24, 2015 at 03:51:37PM -0700, David Miller wrote:
From: Andrew Lunn <andrew@lunn.ch>
Date: Fri, 25 Sep 2015 00:26:54 +0200
quoted
On Thu, Sep 24, 2015 at 03:15:54PM -0700, David Miller wrote:
quoted
From: Andrew Lunn <andrew@lunn.ch>
Date: Thu, 24 Sep 2015 23:57:31 +0200
quoted
I built the FEC driver as a module, and it won't unload:

 kernel:unregister_netdevice: waiting for eth1 to become free. Usage count = 1
unregister_netdevice: waiting for eth1 to become free. Usage count = 1

i assume because DSA holds a reference. I've not tried a fully module
build, DSA has issues with that.

Tested-by: Andrew Lunn <andrew@lunn.ch>
So, is this a regression?
Sorry, worded that badly. Since DSA is still active, it should not be
possible to unload the FEC driver. DSA should have a reference to it,
and mdio-mux also should have a reference to the mdio bus of the FEC
driver.

As Russell requested, i will re-test without his patches, just to make
sure.
Something needs to hold into the underlying device refcount of a DSA
blob so that an unload can't even be attempted in that state.
Holding a reference on a struct device does _not_ stop the device
being unbound or the module driving it being removed.  It merely
stops the struct device from being freed before all references have
been dropped.

Devices are always free to be unbound from their bound drivers
irrespective of the struct device refcount.  Even taking a reference
on the module (via try_module_get()) does not stop this.

-- 
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help