From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753276AbcKHXTq (ORCPT ); Tue, 8 Nov 2016 18:19:46 -0500 Received: from devils.ext.ti.com ([198.47.26.153]:47231 "EHLO devils.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751696AbcKHXTo (ORCPT ); Tue, 8 Nov 2016 18:19:44 -0500 Subject: Re: [PATCH net v2 2/4] net: ethernet: ti: cpsw: fix device and of_node leaks To: Johan Hovold , Florian Fainelli , Mugunthan V N , Yisen Zhuang , Salil Mehta , "David S. Miller" References: <1478194822-29545-1-git-send-email-johan@kernel.org> <1478194822-29545-3-git-send-email-johan@kernel.org> CC: , , From: Grygorii Strashko Message-ID: <0c76f9db-ab5f-bce3-897d-5f325c2b84c4@ti.com> Date: Tue, 8 Nov 2016 17:19:29 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <1478194822-29545-3-git-send-email-johan@kernel.org> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [128.247.83.173] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/03/2016 12:40 PM, Johan Hovold wrote: > Make sure to drop the references taken by of_get_child_by_name() and > bus_find_device() before returning from cpsw_phy_sel(). > > Note that holding a reference to the cpsw-phy-sel device does not > prevent the devres-managed private data from going away. > > Fixes: 5892cd135e16 ("drivers: net: cpsw-phy-sel: Add new driver...") > Cc: Mugunthan V N > Cc: Grygorii Strashko > Cc: linux-omap@vger.kernel.org > Signed-off-by: Johan Hovold > --- Reviewed-by: Grygorii Strashko > drivers/net/ethernet/ti/cpsw-phy-sel.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/net/ethernet/ti/cpsw-phy-sel.c b/drivers/net/ethernet/ti/cpsw-phy-sel.c > index 054a8dd23dae..ba1e45ff6aae 100644 > --- a/drivers/net/ethernet/ti/cpsw-phy-sel.c > +++ b/drivers/net/ethernet/ti/cpsw-phy-sel.c > @@ -176,9 +176,12 @@ void cpsw_phy_sel(struct device *dev, phy_interface_t phy_mode, int slave) > } > > dev = bus_find_device(&platform_bus_type, NULL, node, match); > + of_node_put(node); > priv = dev_get_drvdata(dev); > > priv->cpsw_phy_sel(priv, phy_mode, slave); > + > + put_device(dev); > } > EXPORT_SYMBOL_GPL(cpsw_phy_sel); > > -- regards, -grygorii