The subsystem rwsem is not used by the driver core at all, so the use of it in the phy code doesn't make any sense. They might possibly want to use a local lock, but I am unsure about that. Cc: netdev <netdev@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- drivers/net/phy/fixed.c | 6 ------ drivers/net/phy/phy_device.c | 9 +-------- 2 files changed, 1 insertions(+), 14 deletions(-) diff --git a/drivers/net/phy/fixed.c b/drivers/net/phy/fixed.c index 66da91b..68c99b4 100644 --- a/drivers/net/phy/fixed.c +++ b/drivers/net/phy/fixed.c @@ -276,21 +276,15 @@ static int fixed_mdio_register_device(int number, int speed, int duplex) artificially, we are binding the driver here by hand; it will be the same for all the fixed phys anyway. */ - down_write(&phydev->dev.bus->subsys.rwsem); - phydev->dev.driver = &fixed_mdio_driver.driver; err = phydev->dev.driver->probe(&phydev->dev); if(err < 0) { printk(KERN_ERR "Phy %s: problems with fixed driver\n",phydev->dev.bus_id); - up_write(&phydev->dev.bus->subsys.rwsem); goto probe_fail; } err = device_bind_driver(&phydev->dev); - - up_write(&phydev->dev.bus->subsys.rwsem); - if (err) goto probe_fail; diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 7d5b6d1..8f01952 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -208,16 +208,12 @@ struct phy_device *phy_attach(struct net_device *dev, * exist, and we should use the genphy driver. */ if (NULL == d->driver) { int err; - down_write(&d->bus->subsys.rwsem); d->driver = &genphy_driver.driver; err = d->driver->probe(d); - if (err >= 0) err = device_bind_driver(d); - up_write(&d->bus->subsys.rwsem); - if (err) return ERR_PTR(err); } @@ -258,11 +254,8 @@ void phy_detach(struct phy_device *phydev) * was using the generic driver), we unbind the device * from the generic driver so that there's a chance a * real driver could be loaded */ - if (phydev->dev.driver == &genphy_driver.driver) { - down_write(&phydev->dev.bus->subsys.rwsem); + if (phydev->dev.driver == &genphy_driver.driver) device_release_driver(&phydev->dev); - up_write(&phydev->dev.bus->subsys.rwsem); - } } EXPORT_SYMBOL(phy_detach); -- 1.5.1.2 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [PATCH 28/46] PHY: remove rwsem use from phy core
- From: Andy Fleming <afleming@freescale.com>
- [PATCH 29/46] qeth: Remove usage of subsys.rwsem
- From: Greg Kroah-Hartman <gregkh@suse.de>
- Re: [PATCH 28/46] PHY: remove rwsem use from phy core
- References:
- [GIT PATCH] Driver core patches for 2.6.21
- From: Greg KH <gregkh@suse.de>
- [PATCH 01/46] driver core: fix device_add error path
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 02/46] driver core: fix namespace issue with devices assigned to classes
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 03/46] dev_printk and new-style class devices
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 05/46] driver core: Use attribute groups in struct device_type
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 06/46] Driver core: add name to device_type
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 07/46] kobject: kobject_shadow_add cleanup
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 08/46] driver core: per-subsystem multithreaded probing
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 09/46] powerpc: make it compile for multithread change
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 10/46] driver core: don't fail attaching the device if it cannot be bound
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 11/46] Driver core: remove unneeded completion from driver release path
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 12/46] kref: fix CPU ordering with respect to krefs
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 13/46] Driver core: notify userspace of network device renames
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 14/46] Driver core: suppress uevents via filter
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 15/46] Driver core: switch firmware_class to uevent_suppress.
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 16/46] uevent: use add_uevent_var() instead of open coding it
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 17/46] Driver core: add suspend() and resume() to struct device_type
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 18/46] Kobject: kobject_uevent.c: Collapse unnecessary loop nesting (top_kobj)
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 19/46] kobject: kobject_add() reference leak
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 20/46] Driver core: remove use of rwsem
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 21/46] SCSI: use the proper semaphore to protect the class lists
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 22/46] USB: remove use of the bus rwsem, as it doesn't really protect anything.
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 23/46] PNP: stop using the subsystem rwsem
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 24/46] Input: serio - do not touch bus's rwsem
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 25/46] Input: gameport - do not touch bus's rwsem
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 26/46] IDE: remove rwsem use from ide-proc core
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [PATCH 27/46] IEEE1394: remove rwsem use from ieee1394 core
- From: Greg Kroah-Hartman <gregkh@suse.de>
- [GIT PATCH] Driver core patches for 2.6.21
- Prev by Date: [PATCH 19/46] kobject: kobject_add() reference leak
- Next by Date: [PATCH 29/46] qeth: Remove usage of subsys.rwsem
- Previous by thread: [PATCH 27/46] IEEE1394: remove rwsem use from ieee1394 core
- Next by thread: [PATCH 29/46] qeth: Remove usage of subsys.rwsem
- Index(es):
![]() |