]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
usb: host: ohci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
authorKrzysztof Kozlowski <krzk@kernel.org>
Sat, 7 Jan 2017 08:41:41 +0000 (10:41 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 20 Jun 2017 08:46:27 +0000 (10:46 +0200)
BugLink: http://bugs.launchpad.net/bugs/1691369
commit 68bd6fc3cfa98ef253e17307ccafd8ef907b5556 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/ohci-exynos.c

index 2cd105be7319f6e61ec2bd799f9eb1b8cdef5fa1..6865b919403f761efc3c732f28930b097ca4b05b 100644 (file)
@@ -66,10 +66,12 @@ static int exynos_ohci_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;
                        }
                }