From: Johan Hovold <johan@kernel.org> Date: 2016-11-03 17:41:11
This series fixes a number of device reference leaks (and one of_node
leak) due to failure to drop the references taken by bus_find_device()
and friends.
Note that the final two patches have been compile tested only.
Thanks,
Johan
v2
- hold reference to cpsw-phy-sel device while accessing private data as
requested by David. Also update the commit message. (patch 1/4)
- add linux-omap on CC where appropriate
Johan Hovold (4):
phy: fix device reference leaks
net: ethernet: ti: cpsw: fix device and of_node leaks
net: ethernet: ti: davinci_emac: fix device reference leak
net: hns: fix device reference leaks
drivers/net/ethernet/hisilicon/hns/hnae.c | 8 +++++++-
drivers/net/ethernet/ti/cpsw-phy-sel.c | 3 +++
drivers/net/ethernet/ti/davinci_emac.c | 10 ++++++----
drivers/net/phy/phy_device.c | 2 ++
4 files changed, 18 insertions(+), 5 deletions(-)
--
2.7.3
From: Johan Hovold <johan@kernel.org> Date: 2016-11-03 17:41:10
Make sure to drop the reference taken by bus_find_device_by_name()
before returning from phy_connect() and phy_attach().
Note that both function still take a reference to the phy device
through phy_attach_direct().
Fixes: e13934563db0 ("[PATCH] PHY Layer fixup")
Cc: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/net/phy/phy_device.c | 2 ++
1 file changed, 2 insertions(+)
From: Johan Hovold <johan@kernel.org> Date: 2016-11-03 17:41:13
Make sure to drop the references taken by bus_find_device() before
returning from emac_dev_open().
Note that phy_connect still takes a reference to the phy device.
Fixes: 5d69e0076a72 ("net: davinci_emac: switch to new mdio")
Cc: Mugunthan V N <redacted>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: linux-omap@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/net/ethernet/ti/davinci_emac.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
@@ -1410,6 +1410,7 @@ static int emac_dev_open(struct net_device *ndev)inti=0;structemac_priv*priv=netdev_priv(ndev);structphy_device*phydev=NULL;+structdevice*phy=NULL;ret=pm_runtime_get_sync(&priv->pdev->dev);if(ret<0){
@@ -1488,19 +1489,20 @@ static int emac_dev_open(struct net_device *ndev)/* use the first phy on the bus if pdata did not give us a phy id */if(!phydev&&!priv->phy_id){-structdevice*phy;-phy=bus_find_device(&mdio_bus_type,NULL,NULL,match_first_device);-if(phy)+if(phy){priv->phy_id=dev_name(phy);+if(!priv->phy_id||!*priv->phy_id)+put_device(phy);+}}if(!phydev&&priv->phy_id&&*priv->phy_id){phydev=phy_connect(ndev,priv->phy_id,&emac_adjust_link,PHY_INTERFACE_MODE_MII);-+put_device(phy);/* reference taken by bus_find_device */if(IS_ERR(phydev)){dev_err(emac_dev,"could not connect to phy %s\n",priv->phy_id);
From: Johan Hovold <johan@kernel.org> Date: 2016-11-03 17:42:10
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 <redacted>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: linux-omap@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/net/ethernet/ti/cpsw-phy-sel.c | 3 +++
1 file changed, 3 insertions(+)
From: Johan Hovold <johan@kernel.org> Date: 2016-11-03 17:42:12
Make sure to drop the reference taken by class_find_device() in
hnae_get_handle() on errors and when later releasing the handle.
Fixes: 6fe6611ff275 ("net: add Hisilicon Network Subsystem...")
Cc: Yisen Zhuang <redacted>
Cc: Salil Mehta <redacted>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/net/ethernet/hisilicon/hns/hnae.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
From: David Miller <davem@davemloft.net> Date: 2016-11-07 18:18:09
From: Johan Hovold <johan@kernel.org>
Date: Thu, 3 Nov 2016 18:40:18 +0100
This series fixes a number of device reference leaks (and one of_node
leak) due to failure to drop the references taken by bus_find_device()
and friends.
Note that the final two patches have been compile tested only.
...
v2
- hold reference to cpsw-phy-sel device while accessing private data as
requested by David. Also update the commit message. (patch 1/4)
- add linux-omap on CC where appropriate
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 <redacted>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: linux-omap@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
---
From: Johan Hovold <johan@kernel.org> Date: 2016-11-09 09:58:46
On Tue, Nov 08, 2016 at 05:19:29PM -0600, Grygorii Strashko wrote:
On 11/03/2016 12:40 PM, Johan Hovold wrote:
quoted
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 <redacted>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: linux-omap@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
---