net: phy: don't abuse devres in devm_mdiobus_register()
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Mon, 29 Jun 2020 12:03:43 +0000 (14:03 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 30 Jun 2020 22:57:34 +0000 (15:57 -0700)
commitac3a68d56651c3dad2c12c7afce065fe15267f44
tree71ed3ea13a53ccae6483acae6caa4b53c29d32d6
parent6a9a5723cb2ef3cdf3604e9f0c63c8e68cbb08d5
net: phy: don't abuse devres in devm_mdiobus_register()

We currently have two managed helpers for mdiobus - devm_mdiobus_alloc()
and devm_mdiobus_register(). The idea behind devres is that the release
callback releases whatever resource the devm function allocates. In the
mdiobus case however there's no devres associated with the device by
devm_mdiobus_register(). Instead the release callback for
devm_mdiobus_alloc(): _devm_mdiobus_free() unregisters the device if
it is marked as managed.

This all seems wrong. The managed structure shouldn't need to know or
care about whether it's managed or not - and this is the case now for
struct mii_bus. The devres wrapper should be opaque to the managed
resource.

This changeset makes devm_mdiobus_alloc() and devm_mdiobus_register()
conform to common devres standards: devm_mdiobus_alloc() allocates a
devres structure and registers a callback that will call mdiobus_free().
__devm_mdiobus_register() allocated another devres and registers a
callback that will unregister the bus.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/driver-api/driver-model/devres.rst
drivers/net/ethernet/realtek/r8169_main.c
drivers/net/phy/mdio_bus.c
drivers/net/phy/mdio_devres.c
include/linux/phy.h