Message ID | 20170107084141.3731-1-krzk@kernel.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Hello Krzysztof, On 01/07/2017 05:41 AM, Krzysztof Kozlowski wrote: > 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> > --- Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com> Best regards,
On Sat, 7 Jan 2017, Krzysztof Kozlowski wrote: > 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> > --- > drivers/usb/host/ehci-exynos.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c > index 42e5b66353ef..7a603f66a9bc 100644 > --- a/drivers/usb/host/ehci-exynos.c > +++ b/drivers/usb/host/ehci-exynos.c > @@ -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; > } > } > Acked-by: Alan Stern <stern@rowland.harvard.edu> -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c index 42e5b66353ef..7a603f66a9bc 100644 --- a/drivers/usb/host/ehci-exynos.c +++ b/drivers/usb/host/ehci-exynos.c @@ -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; } }
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> --- drivers/usb/host/ehci-exynos.c | 2 ++ 1 file changed, 2 insertions(+)