| From foo@baz Tue Apr  9 12:12:43 2002 | 
 | Date: Mon, 9 Apr 2007 11:52:31 -0400 (EDT) | 
 | To: Greg KH <greg@kroah.com> | 
 | From: Greg Kroah-Hartman <gregkh@suse.de> | 
 | Subject: PHY: remove rwsem use from phy core | 
 |  | 
 | 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 insertion(+), 14 deletions(-) | 
 |  | 
 | --- a/drivers/net/phy/fixed.c | 
 | +++ b/drivers/net/phy/fixed.c | 
 | @@ -276,21 +276,15 @@ static int fixed_mdio_register_device(in | 
 |  	   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; | 
 |   | 
 | --- 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 | 
 |  	 * 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 *phyde | 
 |  	 * 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); | 
 |   |