From 689fbb422c7dd0c7a74aa3b93200764f319727dc Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Wed, 27 Feb 2013 15:11:13 +0100 Subject: [PATCH] --- yaml --- r: 361247 b: refs/heads/master c: 1dd03d8a510dae402096b194385a1373100450dc h: refs/heads/master i: 361245: 1d7c207240e3a4513148e5c2c65ac7b307455662 361243: ed99ab80088312d53d4692a4c5c0ddabdc2f3563 361239: a1993b5b1fce1811781c21188d4fa45a53ed3ff6 361231: 9e877a579e9b29e4ba2d5c9edd2d71e1849dcde3 361215: 137c05c896b89150e5a9673cddee25e25b1d57b3 v: v3 --- [refs] | 2 +- trunk/drivers/usb/otg/otg.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 00c36dea55c8..611cf38669d9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a10840c9acbeca7aada3543823fdb59909342d96 +refs/heads/master: 1dd03d8a510dae402096b194385a1373100450dc diff --git a/trunk/drivers/usb/otg/otg.c b/trunk/drivers/usb/otg/otg.c index e1814397ca3a..2bd03d261a50 100644 --- a/trunk/drivers/usb/otg/otg.c +++ b/trunk/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);