diff options
| author | Maxime Ripard <maxime.ripard@free-electrons.com> | 2013-04-08 21:39:22 +0200 | 
|---|---|---|
| committer | Maxime Ripard <maxime.ripard@free-electrons.com> | 2013-04-08 21:39:22 +0200 | 
| commit | 7c91d302ffe2ffac813c47d6ba2e7489a2ccb35f (patch) | |
| tree | 78a2cf601e986694765b28079bf749a8eaa6a2b9 /drivers/usb/otg/otg.c | |
| parent | 0b824f8dad9fdfc7c1bf9c1d3ac744075eb73ec6 (diff) | |
| parent | 918d7f6f68620e0721bb31402ebf87e15f826831 (diff) | |
| download | olio-linux-3.10-7c91d302ffe2ffac813c47d6ba2e7489a2ccb35f.tar.xz olio-linux-3.10-7c91d302ffe2ffac813c47d6ba2e7489a2ccb35f.zip | |
Merge remote-tracking branch 'clk/clk-for-3.10' into sunxi/core-for-3.10
Diffstat (limited to 'drivers/usb/otg/otg.c')
| -rw-r--r-- | drivers/usb/otg/otg.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/drivers/usb/otg/otg.c b/drivers/usb/otg/otg.c index e1814397ca3..2bd03d261a5 100644 --- a/drivers/usb/otg/otg.c +++ b/drivers/usb/otg/otg.c @@ -130,7 +130,7 @@ struct usb_phy *usb_get_phy(enum usb_phy_type type)  	spin_lock_irqsave(&phy_lock, flags);  	phy = __usb_find_phy(&phy_list, type); -	if (IS_ERR(phy)) { +	if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) {  		pr_err("unable to find transceiver of type %s\n",  			usb_phy_type_string(type));  		goto err0; @@ -228,7 +228,7 @@ struct usb_phy *usb_get_phy_dev(struct device *dev, u8 index)  	spin_lock_irqsave(&phy_lock, flags);  	phy = __usb_find_phy_dev(dev, &phy_bind_list, index); -	if (IS_ERR(phy)) { +	if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) {  		pr_err("unable to find transceiver\n");  		goto err0;  	} @@ -301,8 +301,12 @@ EXPORT_SYMBOL(devm_usb_put_phy);   */  void usb_put_phy(struct usb_phy *x)  { -	if (x) +	if (x) { +		struct module *owner = x->dev->driver->owner; +  		put_device(x->dev); +		module_put(owner); +	}  }  EXPORT_SYMBOL(usb_put_phy); |