]> git.itanic.dy.fi Git - linux-stable/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)
committerSasha Levin <alexander.levin@verizon.com>
Tue, 13 Jun 2017 13:29:20 +0000 (09:29 -0400)
[ Upstream commit 3f6026b1dcb3c8ee71198c485a72ac674c6890dd ]

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: Sasha Levin <alexander.levin@verizon.com>
drivers/usb/host/ehci-exynos.c

index df538fd10aa4c0dd566b5df861fac36cbbca7532..46f5354c534d421f03d6a6221ae473a6c0969f23 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;
                        }
                }