From e8c8c5f00243a2b4aa63205c04c3f4e1b4eccf20 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 8 May 2020 13:53:19 +0200 Subject: [PATCH] drop some 4.4 patches --- ...ve-dsa-slave-destroy-code-to-slave.c.patch | 67 --------------- ...sa-slave-fix-fixed-link-phydev-leaks.patch | 32 ------- ...bcmgenet-fix-fixed-link-phydev-leaks.patch | 54 ------------ ...msysport-fix-fixed-link-phydev-leaks.patch | 85 ------------------- ...rnet-fec-fix-fixed-link-phydev-leaks.patch | 50 ----------- ...-fs_enet-fix-fixed-link-phydev-leaks.patch | 51 ----------- ...-gianfar-fix-fixed-link-phydev-leaks.patch | 57 ------------- ...l-mvneta-fix-fixed-link-phydev-leaks.patch | 49 ----------- ...-fixed-link-phydev-and-of-node-leaks.patch | 71 ---------------- ...ucc_geth-fix-fixed-link-phydev-leaks.patch | 77 ----------------- ...helper-to-deregister-fixed-link-phys.patch | 66 -------------- queue-4.4/series | 11 --- 12 files changed, 670 deletions(-) delete mode 100644 queue-4.4/net-dsa-move-dsa-slave-destroy-code-to-slave.c.patch delete mode 100644 queue-4.4/net-dsa-slave-fix-fixed-link-phydev-leaks.patch delete mode 100644 queue-4.4/net-ethernet-bcmgenet-fix-fixed-link-phydev-leaks.patch delete mode 100644 queue-4.4/net-ethernet-bcmsysport-fix-fixed-link-phydev-leaks.patch delete mode 100644 queue-4.4/net-ethernet-fec-fix-fixed-link-phydev-leaks.patch delete mode 100644 queue-4.4/net-ethernet-fs_enet-fix-fixed-link-phydev-leaks.patch delete mode 100644 queue-4.4/net-ethernet-gianfar-fix-fixed-link-phydev-leaks.patch delete mode 100644 queue-4.4/net-ethernet-marvell-mvneta-fix-fixed-link-phydev-leaks.patch delete mode 100644 queue-4.4/net-ethernet-ti-davinci_emac-fix-fixed-link-phydev-and-of-node-leaks.patch delete mode 100644 queue-4.4/net-ethernet-ucc_geth-fix-fixed-link-phydev-leaks.patch delete mode 100644 queue-4.4/of_mdio-add-helper-to-deregister-fixed-link-phys.patch diff --git a/queue-4.4/net-dsa-move-dsa-slave-destroy-code-to-slave.c.patch b/queue-4.4/net-dsa-move-dsa-slave-destroy-code-to-slave.c.patch deleted file mode 100644 index 183c2be389b..00000000000 --- a/queue-4.4/net-dsa-move-dsa-slave-destroy-code-to-slave.c.patch +++ /dev/null @@ -1,67 +0,0 @@ -From cda5c15b23fb9d683a491e8bd137d11d8552ac02 Mon Sep 17 00:00:00 2001 -From: Neil Armstrong -Date: Mon, 7 Dec 2015 13:57:35 +0100 -Subject: net: dsa: move dsa slave destroy code to slave.c - -From: Neil Armstrong - -commit cda5c15b23fb9d683a491e8bd137d11d8552ac02 upstream. - -Move dsa slave dedicated code from dsa_switch_destroy to a new -dsa_slave_destroy function in slave.c. -Add the netif_carrier_off and phy_disconnect calls in order to -correctly cleanup the netdev state and PHY state machine. - -Signed-off-by: Frode Isaksen -Signed-off-by: Neil Armstrong -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - net/dsa/dsa.c | 3 +-- - net/dsa/dsa_priv.h | 1 + - net/dsa/slave.c | 11 +++++++++++ - 3 files changed, 13 insertions(+), 2 deletions(-) - ---- a/net/dsa/dsa.c -+++ b/net/dsa/dsa.c -@@ -454,8 +454,7 @@ static void dsa_switch_destroy(struct ds - if (!ds->ports[port]) - continue; - -- unregister_netdev(ds->ports[port]); -- free_netdev(ds->ports[port]); -+ dsa_slave_destroy(ds->ports[port]); - } - - mdiobus_unregister(ds->slave_mii_bus); ---- a/net/dsa/dsa_priv.h -+++ b/net/dsa/dsa_priv.h -@@ -61,6 +61,7 @@ extern const struct dsa_device_ops notag - void dsa_slave_mii_bus_init(struct dsa_switch *ds); - int dsa_slave_create(struct dsa_switch *ds, struct device *parent, - int port, char *name); -+void dsa_slave_destroy(struct net_device *slave_dev); - int dsa_slave_suspend(struct net_device *slave_dev); - int dsa_slave_resume(struct net_device *slave_dev); - int dsa_slave_netdevice_event(struct notifier_block *unused, ---- a/net/dsa/slave.c -+++ b/net/dsa/slave.c -@@ -1225,6 +1225,17 @@ int dsa_slave_create(struct dsa_switch * - return 0; - } - -+void dsa_slave_destroy(struct net_device *slave_dev) -+{ -+ struct dsa_slave_priv *p = netdev_priv(slave_dev); -+ -+ netif_carrier_off(slave_dev); -+ if (p->phy) -+ phy_disconnect(p->phy); -+ unregister_netdev(slave_dev); -+ free_netdev(slave_dev); -+} -+ - static bool dsa_slave_dev_check(struct net_device *dev) - { - return dev->netdev_ops == &dsa_slave_netdev_ops; diff --git a/queue-4.4/net-dsa-slave-fix-fixed-link-phydev-leaks.patch b/queue-4.4/net-dsa-slave-fix-fixed-link-phydev-leaks.patch deleted file mode 100644 index 30d39b0cf59..00000000000 --- a/queue-4.4/net-dsa-slave-fix-fixed-link-phydev-leaks.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 881eadabe71fa78c081eda3cd5701768f3778a21 Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:25:09 +0100 -Subject: net: dsa: slave: fix fixed-link phydev leaks - -From: Johan Hovold - -commit 881eadabe71fa78c081eda3cd5701768f3778a21 upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on slave-setup errors and on slave destroy. - -Fixes: 0d8bcdd383b8 ("net: dsa: allow for more complex PHY setups") -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - net/dsa/slave.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/net/dsa/slave.c -+++ b/net/dsa/slave.c -@@ -1083,6 +1083,8 @@ static int dsa_slave_phy_setup(struct ds - ret = dsa_slave_phy_connect(p, slave_dev, p->port); - if (ret) { - netdev_err(slave_dev, "failed to connect to port %d: %d\n", p->port, ret); -+ if (phy_is_fixed) -+ of_phy_deregister_fixed_link(port_dn); - return ret; - } - } else { diff --git a/queue-4.4/net-ethernet-bcmgenet-fix-fixed-link-phydev-leaks.patch b/queue-4.4/net-ethernet-bcmgenet-fix-fixed-link-phydev-leaks.patch deleted file mode 100644 index d6a62ca137c..00000000000 --- a/queue-4.4/net-ethernet-bcmgenet-fix-fixed-link-phydev-leaks.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 140ca9d3471c424ab4c4036ab8d8d995f24a9c5b Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:24:59 +0100 -Subject: net: ethernet: bcmgenet: fix fixed-link phydev leaks - -From: Johan Hovold - -commit 140ca9d3471c424ab4c4036ab8d8d995f24a9c5b upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on probe errors and on driver unbind. - -Note that we're still leaking any fixed-link PHY registered in the -non-OF probe path. - -Fixes: 9abf0c2b717a ("net: bcmgenet: use the new fixed PHY helpers") -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/net/ethernet/broadcom/genet/bcmmii.c | 6 ++++++ - 1 file changed, 6 insertions(+) - ---- a/drivers/net/ethernet/broadcom/genet/bcmmii.c -+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c -@@ -629,6 +629,7 @@ static int bcmgenet_mii_bus_init(struct - int bcmgenet_mii_init(struct net_device *dev) - { - struct bcmgenet_priv *priv = netdev_priv(dev); -+ struct device_node *dn = priv->pdev->dev.of_node; - int ret; - - ret = bcmgenet_mii_alloc(priv); -@@ -642,6 +643,8 @@ int bcmgenet_mii_init(struct net_device - return 0; - - out: -+ if (of_phy_is_fixed_link(dn)) -+ of_phy_deregister_fixed_link(dn); - of_node_put(priv->phy_dn); - mdiobus_unregister(priv->mii_bus); - kfree(priv->mii_bus->irq); -@@ -652,7 +655,10 @@ out: - void bcmgenet_mii_exit(struct net_device *dev) - { - struct bcmgenet_priv *priv = netdev_priv(dev); -+ struct device_node *dn = priv->pdev->dev.of_node; - -+ if (of_phy_is_fixed_link(dn)) -+ of_phy_deregister_fixed_link(dn); - of_node_put(priv->phy_dn); - mdiobus_unregister(priv->mii_bus); - kfree(priv->mii_bus->irq); diff --git a/queue-4.4/net-ethernet-bcmsysport-fix-fixed-link-phydev-leaks.patch b/queue-4.4/net-ethernet-bcmsysport-fix-fixed-link-phydev-leaks.patch deleted file mode 100644 index 2113973d20e..00000000000 --- a/queue-4.4/net-ethernet-bcmsysport-fix-fixed-link-phydev-leaks.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 39f8b0d426e0b3e04ddf4c6ef0ae28873c0f8c0f Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:24:58 +0100 -Subject: net: ethernet: bcmsysport: fix fixed-link phydev leaks - -From: Johan Hovold - -commit 39f8b0d426e0b3e04ddf4c6ef0ae28873c0f8c0f upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on probe errors and on driver unbind. - -Fixes: 186534a3f832 ("net: systemport: use the new fixed PHY helpers") -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/net/ethernet/broadcom/bcmsysport.c | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) - ---- a/drivers/net/ethernet/broadcom/bcmsysport.c -+++ b/drivers/net/ethernet/broadcom/bcmsysport.c -@@ -1781,13 +1781,13 @@ static int bcm_sysport_probe(struct plat - if (priv->irq0 <= 0 || priv->irq1 <= 0) { - dev_err(&pdev->dev, "invalid interrupts\n"); - ret = -EINVAL; -- goto err; -+ goto err_free_netdev; - } - - priv->base = devm_ioremap_resource(&pdev->dev, r); - if (IS_ERR(priv->base)) { - ret = PTR_ERR(priv->base); -- goto err; -+ goto err_free_netdev; - } - - priv->netdev = dev; -@@ -1805,7 +1805,7 @@ static int bcm_sysport_probe(struct plat - ret = of_phy_register_fixed_link(dn); - if (ret) { - dev_err(&pdev->dev, "failed to register fixed PHY\n"); -- goto err; -+ goto err_free_netdev; - } - - priv->phy_dn = dn; -@@ -1847,7 +1847,7 @@ static int bcm_sysport_probe(struct plat - ret = register_netdev(dev); - if (ret) { - dev_err(&pdev->dev, "failed to register net_device\n"); -- goto err; -+ goto err_deregister_fixed_link; - } - - priv->rev = topctrl_readl(priv, REV_CNTL) & REV_MASK; -@@ -1858,7 +1858,11 @@ static int bcm_sysport_probe(struct plat - priv->base, priv->irq0, priv->irq1, txq, rxq); - - return 0; --err: -+ -+err_deregister_fixed_link: -+ if (of_phy_is_fixed_link(dn)) -+ of_phy_deregister_fixed_link(dn); -+err_free_netdev: - free_netdev(dev); - return ret; - } -@@ -1866,11 +1870,14 @@ err: - static int bcm_sysport_remove(struct platform_device *pdev) - { - struct net_device *dev = dev_get_drvdata(&pdev->dev); -+ struct device_node *dn = pdev->dev.of_node; - - /* Not much to do, ndo_close has been called - * and we use managed allocations - */ - unregister_netdev(dev); -+ if (of_phy_is_fixed_link(dn)) -+ of_phy_deregister_fixed_link(dn); - free_netdev(dev); - dev_set_drvdata(&pdev->dev, NULL); - diff --git a/queue-4.4/net-ethernet-fec-fix-fixed-link-phydev-leaks.patch b/queue-4.4/net-ethernet-fec-fix-fixed-link-phydev-leaks.patch deleted file mode 100644 index 92affa5125a..00000000000 --- a/queue-4.4/net-ethernet-fec-fix-fixed-link-phydev-leaks.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 82005b1c19b11998ea98532d742c021a19f948d7 Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:25:00 +0100 -Subject: net: ethernet: fec: fix fixed-link phydev leaks - -From: Johan Hovold - -commit 82005b1c19b11998ea98532d742c021a19f948d7 upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on probe errors and on driver unbind. - -Fixes: 407066f8f371 ("net: fec: Support phys probed from devicetree and -fixed-link") -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/net/ethernet/freescale/fec_main.c | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/drivers/net/ethernet/freescale/fec_main.c -+++ b/drivers/net/ethernet/freescale/fec_main.c -@@ -3519,6 +3519,8 @@ failed_regulator: - failed_clk_ipg: - fec_enet_clk_enable(ndev, false); - failed_clk: -+ if (of_phy_is_fixed_link(np)) -+ of_phy_deregister_fixed_link(np); - failed_phy: - of_node_put(phy_node); - failed_ioremap: -@@ -3532,6 +3534,7 @@ fec_drv_remove(struct platform_device *p - { - struct net_device *ndev = platform_get_drvdata(pdev); - struct fec_enet_private *fep = netdev_priv(ndev); -+ struct device_node *np = pdev->dev.of_node; - - cancel_work_sync(&fep->tx_timeout_work); - fec_ptp_stop(pdev); -@@ -3541,6 +3544,8 @@ fec_drv_remove(struct platform_device *p - regulator_disable(fep->reg_phy); - pm_runtime_put(&pdev->dev); - pm_runtime_disable(&pdev->dev); -+ if (of_phy_is_fixed_link(np)) -+ of_phy_deregister_fixed_link(np); - of_node_put(fep->phy_node); - free_netdev(ndev); - diff --git a/queue-4.4/net-ethernet-fs_enet-fix-fixed-link-phydev-leaks.patch b/queue-4.4/net-ethernet-fs_enet-fix-fixed-link-phydev-leaks.patch deleted file mode 100644 index 71190e9a152..00000000000 --- a/queue-4.4/net-ethernet-fs_enet-fix-fixed-link-phydev-leaks.patch +++ /dev/null @@ -1,51 +0,0 @@ -From b9755f03728b21c36375a47a6c6366e00b4f2062 Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:25:01 +0100 -Subject: net: ethernet: fs_enet: fix fixed-link phydev leaks - -From: Johan Hovold - -commit b9755f03728b21c36375a47a6c6366e00b4f2062 upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on probe errors and on driver unbind. - -Fixes: bb74d9a4a87b ("fs_enet: use the new fixed PHY helpers") -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - ---- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c -+++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c -@@ -996,7 +996,7 @@ static int fs_enet_probe(struct platform - err = clk_prepare_enable(clk); - if (err) { - ret = err; -- goto out_free_fpi; -+ goto out_deregister_fixed_link; - } - fpi->clk_per = clk; - } -@@ -1078,6 +1078,9 @@ out_put: - of_node_put(fpi->phy_node); - if (fpi->clk_per) - clk_disable_unprepare(fpi->clk_per); -+out_deregister_fixed_link: -+ if (of_phy_is_fixed_link(ofdev->dev.of_node)) -+ of_phy_deregister_fixed_link(ofdev->dev.of_node); - out_free_fpi: - kfree(fpi); - return ret; -@@ -1096,6 +1099,8 @@ static int fs_enet_remove(struct platfor - of_node_put(fep->fpi->phy_node); - if (fep->fpi->clk_per) - clk_disable_unprepare(fep->fpi->clk_per); -+ if (of_phy_is_fixed_link(ofdev->dev.of_node)) -+ of_phy_deregister_fixed_link(ofdev->dev.of_node); - free_netdev(ndev); - return 0; - } diff --git a/queue-4.4/net-ethernet-gianfar-fix-fixed-link-phydev-leaks.patch b/queue-4.4/net-ethernet-gianfar-fix-fixed-link-phydev-leaks.patch deleted file mode 100644 index af84755cec9..00000000000 --- a/queue-4.4/net-ethernet-gianfar-fix-fixed-link-phydev-leaks.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 42c70042458d74ce049ce4a2ea7702f344a0dc0b Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:25:02 +0100 -Subject: net: ethernet: gianfar: fix fixed-link phydev leaks - -From: Johan Hovold - -commit 42c70042458d74ce049ce4a2ea7702f344a0dc0b upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on probe errors and on driver unbind. - -Fixes: be40364544bd ("gianfar: use the new fixed PHY helpers") -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/net/ethernet/freescale/gianfar.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - ---- a/drivers/net/ethernet/freescale/gianfar.c -+++ b/drivers/net/ethernet/freescale/gianfar.c -@@ -1313,6 +1313,7 @@ static void gfar_init_addr_hash_table(st - */ - static int gfar_probe(struct platform_device *ofdev) - { -+ struct device_node *np = ofdev->dev.of_node; - struct net_device *dev = NULL; - struct gfar_private *priv = NULL; - int err = 0, i; -@@ -1465,6 +1466,8 @@ static int gfar_probe(struct platform_de - return 0; - - register_fail: -+ if (of_phy_is_fixed_link(np)) -+ of_phy_deregister_fixed_link(np); - unmap_group_regs(priv); - gfar_free_rx_queues(priv); - gfar_free_tx_queues(priv); -@@ -1477,11 +1480,16 @@ register_fail: - static int gfar_remove(struct platform_device *ofdev) - { - struct gfar_private *priv = platform_get_drvdata(ofdev); -+ struct device_node *np = ofdev->dev.of_node; - - of_node_put(priv->phy_node); - of_node_put(priv->tbi_node); - - unregister_netdev(priv->ndev); -+ -+ if (of_phy_is_fixed_link(np)) -+ of_phy_deregister_fixed_link(np); -+ - unmap_group_regs(priv); - gfar_free_rx_queues(priv); - gfar_free_tx_queues(priv); diff --git a/queue-4.4/net-ethernet-marvell-mvneta-fix-fixed-link-phydev-leaks.patch b/queue-4.4/net-ethernet-marvell-mvneta-fix-fixed-link-phydev-leaks.patch deleted file mode 100644 index 27c01f05e73..00000000000 --- a/queue-4.4/net-ethernet-marvell-mvneta-fix-fixed-link-phydev-leaks.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 5a57a304315c09f9f93b7b7230a5038555e7fcf9 Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:25:04 +0100 -Subject: net: ethernet: marvell: mvneta: fix fixed-link phydev leaks - -From: Johan Hovold - -commit 5a57a304315c09f9f93b7b7230a5038555e7fcf9 upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on probe errors and on driver unbind. - -Fixes: 83895bedeee6 ("net: mvneta: add support for fixed links") -Signed-off-by: Johan Hovold -Reviewed-by: Thomas Petazzoni -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/net/ethernet/marvell/mvneta.c | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/drivers/net/ethernet/marvell/mvneta.c -+++ b/drivers/net/ethernet/marvell/mvneta.c -@@ -3438,6 +3438,8 @@ err_clk: - clk_disable_unprepare(pp->clk); - err_put_phy_node: - of_node_put(phy_node); -+ if (of_phy_is_fixed_link(dn)) -+ of_phy_deregister_fixed_link(dn); - err_free_irq: - irq_dispose_mapping(dev->irq); - err_free_netdev: -@@ -3449,12 +3451,15 @@ err_free_netdev: - static int mvneta_remove(struct platform_device *pdev) - { - struct net_device *dev = platform_get_drvdata(pdev); -+ struct device_node *dn = pdev->dev.of_node; - struct mvneta_port *pp = netdev_priv(dev); - - unregister_netdev(dev); - clk_disable_unprepare(pp->clk); - free_percpu(pp->ports); - free_percpu(pp->stats); -+ if (of_phy_is_fixed_link(dn)) -+ of_phy_deregister_fixed_link(dn); - irq_dispose_mapping(dev->irq); - of_node_put(pp->phy_node); - free_netdev(dev); diff --git a/queue-4.4/net-ethernet-ti-davinci_emac-fix-fixed-link-phydev-and-of-node-leaks.patch b/queue-4.4/net-ethernet-ti-davinci_emac-fix-fixed-link-phydev-and-of-node-leaks.patch deleted file mode 100644 index 0cf8713b740..00000000000 --- a/queue-4.4/net-ethernet-ti-davinci_emac-fix-fixed-link-phydev-and-of-node-leaks.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 14cab6f6510c498c2fd55d4fd6063a91b477d2ff Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:25:08 +0100 -Subject: net: ethernet: ti: davinci_emac: fix fixed-link phydev and of-node leaks - -From: Johan Hovold - -commit 14cab6f6510c498c2fd55d4fd6063a91b477d2ff upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on probe errors and on driver unbind. - -Also remember to put the of-node reference on probe errors. - -Fixes: 1bb6aa56bb38 ("net: davinci_emac: Add support for fixed-link -PHY") -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/net/ethernet/ti/davinci_emac.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - ---- a/drivers/net/ethernet/ti/davinci_emac.c -+++ b/drivers/net/ethernet/ti/davinci_emac.c -@@ -1909,6 +1909,7 @@ static int davinci_emac_try_get_mac(stru - */ - static int davinci_emac_probe(struct platform_device *pdev) - { -+ struct device_node *np = pdev->dev.of_node; - int rc = 0; - struct resource *res, *res_ctrl; - struct net_device *ndev; -@@ -1947,7 +1948,7 @@ static int davinci_emac_probe(struct pla - if (!pdata) { - dev_err(&pdev->dev, "no platform data\n"); - rc = -ENODEV; -- goto no_pdata; -+ goto err_free_netdev; - } - - /* MAC addr and PHY mask , RMII enable info from platform_data */ -@@ -2083,6 +2084,10 @@ no_cpdma_chan: - cpdma_chan_destroy(priv->rxchan); - cpdma_ctlr_destroy(priv->dma); - no_pdata: -+ if (of_phy_is_fixed_link(np)) -+ of_phy_deregister_fixed_link(np); -+ of_node_put(priv->phy_node); -+err_free_netdev: - free_netdev(ndev); - return rc; - } -@@ -2098,6 +2103,7 @@ static int davinci_emac_remove(struct pl - { - struct net_device *ndev = platform_get_drvdata(pdev); - struct emac_priv *priv = netdev_priv(ndev); -+ struct device_node *np = pdev->dev.of_node; - - dev_notice(&ndev->dev, "DaVinci EMAC: davinci_emac_remove()\n"); - -@@ -2109,6 +2115,8 @@ static int davinci_emac_remove(struct pl - - unregister_netdev(ndev); - of_node_put(priv->phy_node); -+ if (of_phy_is_fixed_link(np)) -+ of_phy_deregister_fixed_link(np); - free_netdev(ndev); - - return 0; diff --git a/queue-4.4/net-ethernet-ucc_geth-fix-fixed-link-phydev-leaks.patch b/queue-4.4/net-ethernet-ucc_geth-fix-fixed-link-phydev-leaks.patch deleted file mode 100644 index 4bef2b5a62c..00000000000 --- a/queue-4.4/net-ethernet-ucc_geth-fix-fixed-link-phydev-leaks.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 0807c4ceb8d171a116edc33e34166416876cae5d Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:25:03 +0100 -Subject: net: ethernet: ucc_geth: fix fixed-link phydev leaks - -From: Johan Hovold - -commit 0807c4ceb8d171a116edc33e34166416876cae5d upstream. - -Make sure to deregister and free any fixed-link PHY registered using -of_phy_register_fixed_link() on probe errors and on driver unbind. - -Fixes: 87009814cdbb ("ucc_geth: use the new fixed PHY helpers") -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/net/ethernet/freescale/ucc_geth.c | 23 ++++++++++++++++------- - 1 file changed, 16 insertions(+), 7 deletions(-) - ---- a/drivers/net/ethernet/freescale/ucc_geth.c -+++ b/drivers/net/ethernet/freescale/ucc_geth.c -@@ -3870,9 +3870,8 @@ static int ucc_geth_probe(struct platfor - dev = alloc_etherdev(sizeof(*ugeth)); - - if (dev == NULL) { -- of_node_put(ug_info->tbi_node); -- of_node_put(ug_info->phy_node); -- return -ENOMEM; -+ err = -ENOMEM; -+ goto err_deregister_fixed_link; - } - - ugeth = netdev_priv(dev); -@@ -3909,10 +3908,7 @@ static int ucc_geth_probe(struct platfor - if (netif_msg_probe(ugeth)) - pr_err("%s: Cannot register net device, aborting\n", - dev->name); -- free_netdev(dev); -- of_node_put(ug_info->tbi_node); -- of_node_put(ug_info->phy_node); -- return err; -+ goto err_free_netdev; - } - - mac_addr = of_get_mac_address(np); -@@ -3925,16 +3921,29 @@ static int ucc_geth_probe(struct platfor - ugeth->node = np; - - return 0; -+ -+err_free_netdev: -+ free_netdev(dev); -+err_deregister_fixed_link: -+ if (of_phy_is_fixed_link(np)) -+ of_phy_deregister_fixed_link(np); -+ of_node_put(ug_info->tbi_node); -+ of_node_put(ug_info->phy_node); -+ -+ return err; - } - - static int ucc_geth_remove(struct platform_device* ofdev) - { - struct net_device *dev = platform_get_drvdata(ofdev); - struct ucc_geth_private *ugeth = netdev_priv(dev); -+ struct device_node *np = ofdev->dev.of_node; - - unregister_netdev(dev); - free_netdev(dev); - ucc_geth_memclean(ugeth); -+ if (of_phy_is_fixed_link(np)) -+ of_phy_deregister_fixed_link(np); - of_node_put(ugeth->ug_info->tbi_node); - of_node_put(ugeth->ug_info->phy_node); - diff --git a/queue-4.4/of_mdio-add-helper-to-deregister-fixed-link-phys.patch b/queue-4.4/of_mdio-add-helper-to-deregister-fixed-link-phys.patch deleted file mode 100644 index 9e90f96b131..00000000000 --- a/queue-4.4/of_mdio-add-helper-to-deregister-fixed-link-phys.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 3f65047c853a2a5abcd8ac1984af3452b5df4ada Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Mon, 28 Nov 2016 19:24:55 +0100 -Subject: of_mdio: add helper to deregister fixed-link PHYs - -From: Johan Hovold - -commit 3f65047c853a2a5abcd8ac1984af3452b5df4ada upstream. - -Add helper to deregister fixed-link PHYs registered using -of_phy_register_fixed_link(). - -Convert the two drivers that care to deregister their fixed-link PHYs to -use the new helper, but note that most drivers currently fail to do so. - -Signed-off-by: Johan Hovold -Signed-off-by: David S. Miller -[only take helper function for 4.4.y - gregkh] -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/of/of_mdio.c | 15 +++++++++++++++ - include/linux/of_mdio.h | 4 ++++ - 2 files changed, 19 insertions(+) - ---- a/drivers/of/of_mdio.c -+++ b/drivers/of/of_mdio.c -@@ -367,4 +367,19 @@ int of_phy_register_fixed_link(struct de - return -ENODEV; - } - EXPORT_SYMBOL(of_phy_register_fixed_link); -+ -+void of_phy_deregister_fixed_link(struct device_node *np) -+{ -+ struct phy_device *phydev; -+ -+ phydev = of_phy_find_device(np); -+ if (!phydev) -+ return; -+ -+ fixed_phy_unregister(phydev); -+ -+ put_device(&phydev->mdio.dev); /* of_phy_find_device() */ -+ phy_device_free(phydev); /* fixed_phy_register() */ -+} -+EXPORT_SYMBOL(of_phy_deregister_fixed_link); - #endif ---- a/include/linux/of_mdio.h -+++ b/include/linux/of_mdio.h -@@ -71,12 +71,16 @@ static inline int of_mdio_parse_addr(str - - #if defined(CONFIG_OF) && defined(CONFIG_FIXED_PHY) - extern int of_phy_register_fixed_link(struct device_node *np); -+extern void of_phy_deregister_fixed_link(struct device_node *np); - extern bool of_phy_is_fixed_link(struct device_node *np); - #else - static inline int of_phy_register_fixed_link(struct device_node *np) - { - return -ENOSYS; - } -+static inline void of_phy_deregister_fixed_link(struct device_node *np) -+{ -+} - static inline bool of_phy_is_fixed_link(struct device_node *np) - { - return false; diff --git a/queue-4.4/series b/queue-4.4/series index 20ef1a93c19..1d18a46facb 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -225,17 +225,6 @@ sched-fair-fix-calc_cfs_shares-fixed-point-arithmetics-width-confusion.patch net_sched-flower-avoid-dissection-of-unmasked-keys.patch pkt_sched-fq-use-proper-locking-in-fq_dump_stats.patch sched-preempt-fix-preempt_count-manipulations.patch -of_mdio-add-helper-to-deregister-fixed-link-phys.patch -net-ethernet-fs_enet-fix-fixed-link-phydev-leaks.patch -net-ethernet-gianfar-fix-fixed-link-phydev-leaks.patch -net-ethernet-marvell-mvneta-fix-fixed-link-phydev-leaks.patch -net-ethernet-ucc_geth-fix-fixed-link-phydev-leaks.patch -net-ethernet-bcmsysport-fix-fixed-link-phydev-leaks.patch -net-ethernet-bcmgenet-fix-fixed-link-phydev-leaks.patch -net-ethernet-fec-fix-fixed-link-phydev-leaks.patch -net-ethernet-ti-davinci_emac-fix-fixed-link-phydev-and-of-node-leaks.patch -net-dsa-move-dsa-slave-destroy-code-to-slave.c.patch -net-dsa-slave-fix-fixed-link-phydev-leaks.patch power-bq27xxx-fix-reading-for-bq27000-and-bq27010.patch power-bq27xxx-fix-register-numbers-of-bq27500.patch power-test_power-correctly-handle-empty-writes.patch -- 2.47.3