linux/drivers/net/phy
Russell King 3e3aaf6494 phy: fix mdiobus module safety
Re-implement the mdiobus module refcounting to ensure that we actually
ensure that the mdiobus module code does not go away while we might call
into it.

The old scheme using bus->dev.driver was buggy, because bus->dev is a
class device which never has a struct device_driver associated with it,
and hence the associated code trying to obtain a refcount did nothing
useful.

Instead, take the approach that other subsystems do: pass the module
when calling mdiobus_register(), and record that in the mii_bus struct.
When we need to increment the module use count in the phy code, use
this stored pointer.  When the phy is deteched, drop the module
refcount, remembering that the phy device might go away at that point.

This doesn't stop the mii_bus going away while there are in-use phys -
it merely stops the underlying code vanishing.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-09-24 23:04:52 -07:00
..
amd.c net: phy: replace phy_driver_register calls 2014-11-12 13:52:53 -05:00
aquantia.c net: phy: add interrupt support for aquantia phy 2015-08-23 23:14:14 -07:00
at803x.c net: phy: at803x: simplify using devm_gpiod_get_optional and its 4th argument 2015-04-01 12:44:04 -04:00
bcm7xxx.c net: phy: bcm7xxx: workaround MDIO management controller initial read 2015-06-28 20:28:20 -07:00
bcm63xx.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
bcm87xx.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
broadcom.c net: phy: broadcom: Add BCM54616S phy entry 2015-04-08 15:28:13 -04:00
cicada.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
davicom.c net: phy: davicom: add IDs for DM9161B and C variants 2015-06-11 00:24:53 -07:00
dp83640.c dp83640: only report generic filters in ts_info 2015-07-17 19:59:06 -07:00
dp83640_reg.h
dp83867.c net: phy: dp83867: fix simple_return.cocci warnings 2015-07-27 00:59:16 -07:00
et1011c.c net: phy: replace phy_driver_register calls 2014-11-12 13:52:53 -05:00
fixed_phy.c fixed_phy: pass 'irq' to fixed_phy_add() 2015-09-06 23:49:33 -07:00
icplus.c net: phy: Utilize phy_interface_is_rgmii 2015-05-27 00:27:35 -04:00
Kconfig add microchip LAN88xx phy driver 2015-09-09 17:19:14 -07:00
lxt.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
Makefile add microchip LAN88xx phy driver 2015-09-09 17:19:14 -07:00
marvell.c net: phy: select copper mode when Marvel 88e1111 in SGMII 2015-08-10 13:31:18 -07:00
mdio-bcm-unimac.c net: phy: mdio-bcm-unimac: Fix module autoload for OF platform driver 2015-09-21 16:11:20 -07:00
mdio-bitbang.c net: phy: mdio-gpio: Handle phy_ignore_ta_mask 2015-05-14 13:40:55 -04:00
mdio-gpio.c net: phy: mdio-gpio: Fix module autoload for OF platform driver 2015-09-21 16:11:20 -07:00
mdio-moxart.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
mdio-mux-gpio.c gpiolib: rename gpiod_set_array to gpiod_set_array_value 2015-06-01 15:10:09 +02:00
mdio-mux-mmioreg.c net: phy: constify of_device_id array 2015-03-17 15:00:23 -04:00
mdio-mux.c phy: fix of_mdio_find_bus() device refcount leak 2015-09-24 23:04:52 -07:00
mdio-octeon.c net: mdio-octeon: Fix octeon_mdiobus_probe function for return values 2015-07-29 17:17:44 -07:00
mdio-sun4i.c net: sun4i: remove empty MDIO bus reset function 2014-03-28 01:38:02 -04:00
mdio_bus.c phy: fix mdiobus module safety 2015-09-24 23:04:52 -07:00
micrel.c net/phy: micrel: Center FLP timing at 16ms 2015-06-08 00:50:48 -07:00
microchip.c add microchip LAN88xx phy driver 2015-09-09 17:19:14 -07:00
national.c net: phy: replace phy_driver_register calls 2014-11-12 13:52:53 -05:00
phy.c phylib: simplify NULL checks 2015-08-28 14:15:25 -07:00
phy_device.c phy: fix mdiobus module safety 2015-09-24 23:04:52 -07:00
qsemi.c net: phy: replace phy_driver_register calls 2014-11-12 13:52:53 -05:00
realtek.c net: phy: add RealTek RTL8211DN phy id 2015-08-09 22:52:15 -07:00
smsc.c net: phy: fix semicolon.cocci warnings 2015-08-17 15:53:06 -07:00
spi_ks8995.c net: phy: spi_ks8995: clean up ks8995_registers_read/write 2015-07-30 14:16:45 -07:00
ste10Xp.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
teranetics.c net: phy: fix auto negotiation checking for teranetics 2015-07-27 01:04:30 -07:00
vitesse.c Revert "net/phy: Add Vitesse 8641 phy ID" 2015-09-20 22:29:34 -07:00