summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorMathias Krause <minipli@googlemail.com>2014-04-15 07:58:15 +0200
committerFelipe Balbi <balbi@ti.com>2014-04-16 17:11:47 +0200
commit9dc9cb0c9ad0f999e29ce4c4f307cd2abbe752d3 (patch)
treed5a2035c66129022df6981e1e1d1b67f3400cd1d /drivers/usb
parentusb: gadget: rndis: Include "u_rndis.h" (diff)
downloadlinux-9dc9cb0c9ad0f999e29ce4c4f307cd2abbe752d3.tar.xz
linux-9dc9cb0c9ad0f999e29ce4c4f307cd2abbe752d3.zip
usb: phy: return an error in usb_get_phy() if try_module_get() fails
In case we found a matching USB PHY in usb_get_phy() but the call to try_module_get() fails, we shouldn't return a (probably soon dangling) pointer but an ERR_PTR instead. Signed-off-by: Mathias Krause <minipli@googlemail.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/phy/phy.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/phy/phy.c b/drivers/usb/phy/phy.c
index 8afa813d690b..36b6bce33b20 100644
--- a/drivers/usb/phy/phy.c
+++ b/drivers/usb/phy/phy.c
@@ -132,6 +132,9 @@ struct usb_phy *usb_get_phy(enum usb_phy_type type)
if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) {
pr_debug("PHY: unable to find transceiver of type %s\n",
usb_phy_type_string(type));
+ if (!IS_ERR(phy))
+ phy = ERR_PTR(-ENODEV);
+
goto err0;
}