]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
usb: host: ehci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
authorKrzysztof Kozlowski <krzk@kernel.org>
Sat, 7 Jan 2017 08:41:40 +0000 (10:41 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 20 Jun 2017 08:46:26 +0000 (10:46 +0200)
BugLink: http://bugs.launchpad.net/bugs/1691369
commit 3f6026b1dcb3c8ee71198c485a72ac674c6890dd upstream.

Returning from for_each_available_child_of_node() loop requires cleaning
up node refcount.  Error paths lacked it so for example in case of
deferred probe, the refcount of phy node was left increased.

Fixes: 6d40500ac9b6 ("usb: ehci/ohci-exynos: Fix of_node_put() for child when getting PHYs")
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
drivers/usb/host/ehci-exynos.c

index 42e5b66353efac749a0455dd795cc83a80d1870d..7a603f66a9bc541f1ed30c1cc854f216090bc37b 100644 (file)
@@ -77,10 +77,12 @@ static int exynos_ehci_get_phy(struct device *dev,
                if (IS_ERR(phy)) {
                        ret = PTR_ERR(phy);
                        if (ret == -EPROBE_DEFER) {
+                               of_node_put(child);
                                return ret;
                        } else if (ret != -ENOSYS && ret != -ENODEV) {
                                dev_err(dev,
                                        "Error retrieving usb2 phy: %d\n", ret);
+                               of_node_put(child);
                                return ret;
                        }
                }