aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-08-03 07:26:11 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-08-03 07:26:11 -0400
commitf0936155f2204720655aefbc2f17c25a2c80a59e (patch)
tree89ef908bbe7205b8725e5b331fcd3c53a5c85c13
parentd52bd54db8be8999df6df5a776f38c4f8b5e9cea (diff)
parent1d2c2024dcb7aeb2555db4bfd7f991d247ba0508 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Fix several cases of missing of_node_put() calls in various networking drivers. From Peter Chen. 2) Don't try to remove unconfigured VLANs in qed driver, from Yuval Mintz. 3) Unbalanced locking in TIPC error handling, from Wei Yongjun. 4) Fix lockups in CPDMA driver, from Grygorii Strashko. 5) More MACSEC refcount et al fixes, from Sabrina Dubroca. 6) Fix MAC address setting in r8169 during runtime suspend, from Chun-Hao Lin. 7) Various printf format specifier fixes, from Heinrich Schuchardt. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (59 commits) qed: Fail driver load in 100g MSI mode. ethernet: ti: davinci_emac: add missing of_node_put after calling of_parse_phandle ethernet: stmicro: stmmac: add missing of_node_put after calling of_parse_phandle ethernet: stmicro: stmmac: dwmac-socfpga: add missing of_node_put after calling of_parse_phandle ethernet: renesas: sh_eth: add missing of_node_put after calling of_parse_phandle ethernet: renesas: ravb_main: add missing of_node_put after calling of_parse_phandle ethernet: marvell: pxa168_eth: add missing of_node_put after calling of_parse_phandle ethernet: marvell: mvpp2: add missing of_node_put after calling of_parse_phandle ethernet: marvell: mvneta: add missing of_node_put after calling of_parse_phandle ethernet: hisilicon: hns: hns_dsaf_main: add missing of_node_put after calling of_parse_phandle ethernet: hisilicon: hns: hns_dsaf_mac: add missing of_node_put after calling of_parse_phandle ethernet: cavium: octeon: add missing of_node_put after calling of_parse_phandle ethernet: aurora: nb8800: add missing of_node_put after calling of_parse_phandle ethernet: arc: emac_main: add missing of_node_put after calling of_parse_phandle ethernet: apm: xgene: add missing of_node_put after calling of_parse_phandle ethernet: altera: add missing of_node_put 8139too: fix system hang when there is a tx timeout event. qed: Fix error return code in qed_resc_alloc() net: qlcnic: avoid superfluous assignement dsa: b53: remove redundant if ...
-rw-r--r--arch/arm/mach-omap2/omap_device.c2
-rw-r--r--drivers/net/caif/caif_spi.c4
-rw-r--r--drivers/net/dsa/b53/b53_mmap.c3
-rw-r--r--drivers/net/dsa/bcm_sf2.c5
-rw-r--r--drivers/net/ethernet/8390/ax88796.c3
-rw-r--r--drivers/net/ethernet/altera/altera_tse_main.c1
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-drv.c2
-rw-r--r--drivers/net/ethernet/apm/xgene/xgene_enet_hw.c1
-rw-r--r--drivers/net/ethernet/arc/emac_main.c15
-rw-r--r--drivers/net/ethernet/aurora/nb8800.c2
-rw-r--r--drivers/net/ethernet/broadcom/bcm63xx_enet.c2
-rw-r--r--drivers/net/ethernet/brocade/bna/bnad_debugfs.c6
-rw-r--r--drivers/net/ethernet/cavium/octeon/octeon_mgmt.c3
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/sge.c2
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4vf/sge.c2
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_main.c4
-rw-r--r--drivers/net/ethernet/dec/tulip/de4x5.c2
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c9
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c7
-rw-r--r--drivers/net/ethernet/marvell/mvneta.c1
-rw-r--r--drivers/net/ethernet/marvell/mvpp2.c2
-rw-r--r--drivers/net/ethernet/marvell/pxa168_eth.c1
-rw-r--r--drivers/net/ethernet/neterion/s2io.c2
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_dev.c5
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_l2.c13
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_main.c7
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_sriov.c2
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_vf.c4
-rw-r--r--drivers/net/ethernet/qlogic/qede/qede_main.c12
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h1
-rw-r--r--drivers/net/ethernet/qlogic/qlge/qlge_main.c1
-rw-r--r--drivers/net/ethernet/realtek/8139too.c12
-rw-r--r--drivers/net/ethernet/realtek/r8169.c37
-rw-r--r--drivers/net/ethernet/renesas/ravb_main.c1
-rw-r--r--drivers/net/ethernet/renesas/sh_eth.c1
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c36
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_main.c1
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c7
-rw-r--r--drivers/net/ethernet/ti/cpsw.c19
-rw-r--r--drivers/net/ethernet/ti/davinci_cpdma.c3
-rw-r--r--drivers/net/ethernet/ti/davinci_emac.c1
-rw-r--r--drivers/net/macsec.c16
-rw-r--r--drivers/net/phy/mdio-xgene.c4
-rw-r--r--drivers/net/phy/micrel.c4
-rw-r--r--drivers/net/wan/fsl_ucc_hdlc.c3
-rw-r--r--include/net/sctp/constants.h2
-rw-r--r--net/ipv4/tcp_output.c3
-rw-r--r--net/ipv6/addrconf.c3
-rw-r--r--net/sctp/output.c3
-rw-r--r--net/sctp/socket.c2
-rw-r--r--net/sctp/ulpqueue.c4
-rw-r--r--net/tipc/monitor.c2
52 files changed, 195 insertions, 95 deletions
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c
index c2626f83e0c2..e920dd83e443 100644
--- a/arch/arm/mach-omap2/omap_device.c
+++ b/arch/arm/mach-omap2/omap_device.c
@@ -209,7 +209,7 @@ static int _omap_device_notifier_call(struct notifier_block *nb,
209 int err; 209 int err;
210 210
211 switch (event) { 211 switch (event) {
212 case BUS_NOTIFY_DEL_DEVICE: 212 case BUS_NOTIFY_REMOVED_DEVICE:
213 if (pdev->archdata.od) 213 if (pdev->archdata.od)
214 omap_device_delete(pdev->archdata.od); 214 omap_device_delete(pdev->archdata.od);
215 break; 215 break;
diff --git a/drivers/net/caif/caif_spi.c b/drivers/net/caif/caif_spi.c
index 4721948a92f6..3a529fbe539f 100644
--- a/drivers/net/caif/caif_spi.c
+++ b/drivers/net/caif/caif_spi.c
@@ -185,8 +185,8 @@ static ssize_t print_frame(char *buf, size_t size, char *frm,
185 /* Fast forward. */ 185 /* Fast forward. */
186 i = count - cut; 186 i = count - cut;
187 len += snprintf((buf + len), (size - len), 187 len += snprintf((buf + len), (size - len),
188 "--- %u bytes skipped ---\n", 188 "--- %zu bytes skipped ---\n",
189 (int)(count - (cut * 2))); 189 count - (cut * 2));
190 } 190 }
191 191
192 if ((!(i % 10)) && i) { 192 if ((!(i % 10)) && i) {
diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
index 21f1068b0804..77ffc4312808 100644
--- a/drivers/net/dsa/b53/b53_mmap.c
+++ b/drivers/net/dsa/b53/b53_mmap.c
@@ -233,8 +233,7 @@ static int b53_mmap_probe(struct platform_device *pdev)
233 if (!dev) 233 if (!dev)
234 return -ENOMEM; 234 return -ENOMEM;
235 235
236 if (pdata) 236 dev->pdata = pdata;
237 dev->pdata = pdata;
238 237
239 platform_set_drvdata(pdev, dev); 238 platform_set_drvdata(pdev, dev);
240 239
diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c
index cd1d630ae3a9..b2b838724a9b 100644
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
@@ -1622,7 +1622,7 @@ static int bcm_sf2_sw_setup(struct dsa_switch *ds)
1622 "switch_0", priv); 1622 "switch_0", priv);
1623 if (ret < 0) { 1623 if (ret < 0) {
1624 pr_err("failed to request switch_0 IRQ\n"); 1624 pr_err("failed to request switch_0 IRQ\n");
1625 goto out_unmap; 1625 goto out_mdio;
1626 } 1626 }
1627 1627
1628 ret = request_irq(priv->irq1, bcm_sf2_switch_1_isr, 0, 1628 ret = request_irq(priv->irq1, bcm_sf2_switch_1_isr, 0,
@@ -1679,6 +1679,8 @@ static int bcm_sf2_sw_setup(struct dsa_switch *ds)
1679 1679
1680out_free_irq0: 1680out_free_irq0:
1681 free_irq(priv->irq0, priv); 1681 free_irq(priv->irq0, priv);
1682out_mdio:
1683 bcm_sf2_mdio_unregister(priv);
1682out_unmap: 1684out_unmap:
1683 base = &priv->core; 1685 base = &priv->core;
1684 for (i = 0; i < BCM_SF2_REGS_NUM; i++) { 1686 for (i = 0; i < BCM_SF2_REGS_NUM; i++) {
@@ -1686,7 +1688,6 @@ out_unmap:
1686 iounmap(*base); 1688 iounmap(*base);
1687 base++; 1689 base++;
1688 } 1690 }
1689 bcm_sf2_mdio_unregister(priv);
1690 return ret; 1691 return ret;
1691} 1692}
1692 1693
diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c
index 5698f5354c0b..39ca9350d1b2 100644
--- a/drivers/net/ethernet/8390/ax88796.c
+++ b/drivers/net/ethernet/8390/ax88796.c
@@ -910,7 +910,8 @@ static int ax_probe(struct platform_device *pdev)
910 iounmap(ax->map2); 910 iounmap(ax->map2);
911 911
912 exit_mem2: 912 exit_mem2:
913 release_mem_region(mem2->start, mem2_size); 913 if (mem2)
914 release_mem_region(mem2->start, mem2_size);
914 915
915 exit_mem1: 916 exit_mem1:
916 iounmap(ei_local->mem); 917 iounmap(ei_local->mem);
diff --git a/drivers/net/ethernet/altera/altera_tse_main.c b/drivers/net/ethernet/altera/altera_tse_main.c
index 49025e99fb0e..bda31f308cc2 100644
--- a/drivers/net/ethernet/altera/altera_tse_main.c
+++ b/drivers/net/ethernet/altera/altera_tse_main.c
@@ -815,6 +815,7 @@ static int init_phy(struct net_device *dev)
815 phydev = of_phy_connect(dev, phynode, 815 phydev = of_phy_connect(dev, phynode,
816 &altera_tse_adjust_link, 0, priv->phy_iface); 816 &altera_tse_adjust_link, 0, priv->phy_iface);
817 } 817 }
818 of_node_put(phynode);
818 819
819 if (!phydev) { 820 if (!phydev) {
820 netdev_err(dev, "Could not find the PHY\n"); 821 netdev_err(dev, "Could not find the PHY\n");
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index ebf9224b2d31..a9b2709567ec 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -154,7 +154,7 @@ static int xgbe_alloc_channels(struct xgbe_prv_data *pdata)
154 goto err_rx_ring; 154 goto err_rx_ring;
155 155
156 for (i = 0, channel = channel_mem; i < count; i++, channel++) { 156 for (i = 0, channel = channel_mem; i < count; i++, channel++) {
157 snprintf(channel->name, sizeof(channel->name), "channel-%d", i); 157 snprintf(channel->name, sizeof(channel->name), "channel-%u", i);
158 channel->pdata = pdata; 158 channel->pdata = pdata;
159 channel->queue_index = i; 159 channel->queue_index = i;
160 channel->dma_regs = pdata->xgmac_regs + DMA_CH_BASE + 160 channel->dma_regs = pdata->xgmac_regs + DMA_CH_BASE +
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
index 7714b7d4026a..37a0f463b8de 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
@@ -772,6 +772,7 @@ int xgene_enet_phy_connect(struct net_device *ndev)
772 772
773 phy_dev = of_phy_connect(ndev, np, &xgene_enet_adjust_link, 773 phy_dev = of_phy_connect(ndev, np, &xgene_enet_adjust_link,
774 0, pdata->phy_mode); 774 0, pdata->phy_mode);
775 of_node_put(np);
775 if (!phy_dev) { 776 if (!phy_dev) {
776 netdev_err(ndev, "Could not connect to PHY\n"); 777 netdev_err(ndev, "Could not connect to PHY\n");
777 return -ENODEV; 778 return -ENODEV;
diff --git a/drivers/net/ethernet/arc/emac_main.c b/drivers/net/ethernet/arc/emac_main.c
index 586bedac457d..4bff0f3040df 100644
--- a/drivers/net/ethernet/arc/emac_main.c
+++ b/drivers/net/ethernet/arc/emac_main.c
@@ -749,14 +749,16 @@ int arc_emac_probe(struct net_device *ndev, int interface)
749 err = of_address_to_resource(dev->of_node, 0, &res_regs); 749 err = of_address_to_resource(dev->of_node, 0, &res_regs);
750 if (err) { 750 if (err) {
751 dev_err(dev, "failed to retrieve registers base from device tree\n"); 751 dev_err(dev, "failed to retrieve registers base from device tree\n");
752 return -ENODEV; 752 err = -ENODEV;
753 goto out_put_node;
753 } 754 }
754 755
755 /* Get IRQ from device tree */ 756 /* Get IRQ from device tree */
756 irq = irq_of_parse_and_map(dev->of_node, 0); 757 irq = irq_of_parse_and_map(dev->of_node, 0);
757 if (!irq) { 758 if (!irq) {
758 dev_err(dev, "failed to retrieve <irq> value from device tree\n"); 759 dev_err(dev, "failed to retrieve <irq> value from device tree\n");
759 return -ENODEV; 760 err = -ENODEV;
761 goto out_put_node;
760 } 762 }
761 763
762 ndev->netdev_ops = &arc_emac_netdev_ops; 764 ndev->netdev_ops = &arc_emac_netdev_ops;
@@ -778,7 +780,7 @@ int arc_emac_probe(struct net_device *ndev, int interface)
778 err = clk_prepare_enable(priv->clk); 780 err = clk_prepare_enable(priv->clk);
779 if (err) { 781 if (err) {
780 dev_err(dev, "failed to enable clock\n"); 782 dev_err(dev, "failed to enable clock\n");
781 return err; 783 goto out_put_node;
782 } 784 }
783 785
784 clock_frequency = clk_get_rate(priv->clk); 786 clock_frequency = clk_get_rate(priv->clk);
@@ -787,7 +789,8 @@ int arc_emac_probe(struct net_device *ndev, int interface)
787 if (of_property_read_u32(dev->of_node, "clock-frequency", 789 if (of_property_read_u32(dev->of_node, "clock-frequency",
788 &clock_frequency)) { 790 &clock_frequency)) {
789 dev_err(dev, "failed to retrieve <clock-frequency> from device tree\n"); 791 dev_err(dev, "failed to retrieve <clock-frequency> from device tree\n");
790 return -EINVAL; 792 err = -EINVAL;
793 goto out_put_node;
791 } 794 }
792 } 795 }
793 796
@@ -867,6 +870,7 @@ int arc_emac_probe(struct net_device *ndev, int interface)
867 goto out_netif_api; 870 goto out_netif_api;
868 } 871 }
869 872
873 of_node_put(phy_node);
870 return 0; 874 return 0;
871 875
872out_netif_api: 876out_netif_api:
@@ -877,6 +881,9 @@ out_mdio:
877out_clken: 881out_clken:
878 if (priv->clk) 882 if (priv->clk)
879 clk_disable_unprepare(priv->clk); 883 clk_disable_unprepare(priv->clk);
884out_put_node:
885 of_node_put(phy_node);
886
880 return err; 887 return err;
881} 888}
882EXPORT_SYMBOL_GPL(arc_emac_probe); 889EXPORT_SYMBOL_GPL(arc_emac_probe);
diff --git a/drivers/net/ethernet/aurora/nb8800.c b/drivers/net/ethernet/aurora/nb8800.c
index 0d4ea92a0d37..b047fd607b83 100644
--- a/drivers/net/ethernet/aurora/nb8800.c
+++ b/drivers/net/ethernet/aurora/nb8800.c
@@ -1504,6 +1504,7 @@ static int nb8800_probe(struct platform_device *pdev)
1504err_free_dma: 1504err_free_dma:
1505 nb8800_dma_free(dev); 1505 nb8800_dma_free(dev);
1506err_free_bus: 1506err_free_bus:
1507 of_node_put(priv->phy_node);
1507 mdiobus_unregister(bus); 1508 mdiobus_unregister(bus);
1508err_disable_clk: 1509err_disable_clk:
1509 clk_disable_unprepare(priv->clk); 1510 clk_disable_unprepare(priv->clk);
@@ -1519,6 +1520,7 @@ static int nb8800_remove(struct platform_device *pdev)
1519 struct nb8800_priv *priv = netdev_priv(ndev); 1520 struct nb8800_priv *priv = netdev_priv(ndev);
1520 1521
1521 unregister_netdev(ndev); 1522 unregister_netdev(ndev);
1523 of_node_put(priv->phy_node);
1522 1524
1523 mdiobus_unregister(priv->mii_bus); 1525 mdiobus_unregister(priv->mii_bus);
1524 1526
diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
index 87c6b5bdd616..6c8bc5fadac7 100644
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
@@ -1859,7 +1859,7 @@ static int bcm_enet_probe(struct platform_device *pdev)
1859 } else { 1859 } else {
1860 1860
1861 /* run platform code to initialize PHY device */ 1861 /* run platform code to initialize PHY device */
1862 if (pd->mii_config && 1862 if (pd && pd->mii_config &&
1863 pd->mii_config(dev, 1, bcm_enet_mdio_read_mii, 1863 pd->mii_config(dev, 1, bcm_enet_mdio_read_mii,
1864 bcm_enet_mdio_write_mii)) { 1864 bcm_enet_mdio_write_mii)) {
1865 dev_err(&pdev->dev, "unable to configure mdio bus\n"); 1865 dev_err(&pdev->dev, "unable to configure mdio bus\n");
diff --git a/drivers/net/ethernet/brocade/bna/bnad_debugfs.c b/drivers/net/ethernet/brocade/bna/bnad_debugfs.c
index 8fc246ea1fb8..05c1c1dd7751 100644
--- a/drivers/net/ethernet/brocade/bna/bnad_debugfs.c
+++ b/drivers/net/ethernet/brocade/bna/bnad_debugfs.c
@@ -312,7 +312,8 @@ bnad_debugfs_write_regrd(struct file *file, const char __user *buf,
312 struct bnad_debug_info *regrd_debug = file->private_data; 312 struct bnad_debug_info *regrd_debug = file->private_data;
313 struct bnad *bnad = (struct bnad *)regrd_debug->i_private; 313 struct bnad *bnad = (struct bnad *)regrd_debug->i_private;
314 struct bfa_ioc *ioc = &bnad->bna.ioceth.ioc; 314 struct bfa_ioc *ioc = &bnad->bna.ioceth.ioc;
315 int addr, len, rc, i; 315 int rc, i;
316 u32 addr, len;
316 u32 *regbuf; 317 u32 *regbuf;
317 void __iomem *rb, *reg_addr; 318 void __iomem *rb, *reg_addr;
318 unsigned long flags; 319 unsigned long flags;
@@ -372,7 +373,8 @@ bnad_debugfs_write_regwr(struct file *file, const char __user *buf,
372 struct bnad_debug_info *debug = file->private_data; 373 struct bnad_debug_info *debug = file->private_data;
373 struct bnad *bnad = (struct bnad *)debug->i_private; 374 struct bnad *bnad = (struct bnad *)debug->i_private;
374 struct bfa_ioc *ioc = &bnad->bna.ioceth.ioc; 375 struct bfa_ioc *ioc = &bnad->bna.ioceth.ioc;
375 int addr, val, rc; 376 int rc;
377 u32 addr, val;
376 void __iomem *reg_addr; 378 void __iomem *reg_addr;
377 unsigned long flags; 379 unsigned long flags;
378 void *kern_buf; 380 void *kern_buf;
diff --git a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
index e8bc15bcde70..4ab404f45b21 100644
--- a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
+++ b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
@@ -1513,6 +1513,7 @@ static int octeon_mgmt_probe(struct platform_device *pdev)
1513 return 0; 1513 return 0;
1514 1514
1515err: 1515err:
1516 of_node_put(p->phy_np);
1516 free_netdev(netdev); 1517 free_netdev(netdev);
1517 return result; 1518 return result;
1518} 1519}
@@ -1520,8 +1521,10 @@ err:
1520static int octeon_mgmt_remove(struct platform_device *pdev) 1521static int octeon_mgmt_remove(struct platform_device *pdev)
1521{ 1522{
1522 struct net_device *netdev = platform_get_drvdata(pdev); 1523 struct net_device *netdev = platform_get_drvdata(pdev);
1524 struct octeon_mgmt *p = netdev_priv(netdev);
1523 1525
1524 unregister_netdev(netdev); 1526 unregister_netdev(netdev);
1527 of_node_put(p->phy_np);
1525 free_netdev(netdev); 1528 free_netdev(netdev);
1526 return 0; 1529 return 0;
1527} 1530}
diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
index bad253beb8c8..ad3552df0545 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
@@ -1192,7 +1192,7 @@ out_free: dev_kfree_skb_any(skb);
1192 1192
1193 /* Discard the packet if the length is greater than mtu */ 1193 /* Discard the packet if the length is greater than mtu */
1194 max_pkt_len = ETH_HLEN + dev->mtu; 1194 max_pkt_len = ETH_HLEN + dev->mtu;
1195 if (skb_vlan_tag_present(skb)) 1195 if (skb_vlan_tagged(skb))
1196 max_pkt_len += VLAN_HLEN; 1196 max_pkt_len += VLAN_HLEN;
1197 if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len))) 1197 if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len)))
1198 goto out_free; 1198 goto out_free;
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
index 1bb57d3fbbe8..c8fd4f8fe1fa 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
@@ -1188,7 +1188,7 @@ int t4vf_eth_xmit(struct sk_buff *skb, struct net_device *dev)
1188 1188
1189 /* Discard the packet if the length is greater than mtu */ 1189 /* Discard the packet if the length is greater than mtu */
1190 max_pkt_len = ETH_HLEN + dev->mtu; 1190 max_pkt_len = ETH_HLEN + dev->mtu;
1191 if (skb_vlan_tag_present(skb)) 1191 if (skb_vlan_tagged(skb))
1192 max_pkt_len += VLAN_HLEN; 1192 max_pkt_len += VLAN_HLEN;
1193 if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len))) 1193 if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len)))
1194 goto out_free; 1194 goto out_free;
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index f15560a06718..48f82ab6c25b 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -1566,7 +1566,7 @@ static int enic_request_intr(struct enic *enic)
1566 intr = enic_msix_rq_intr(enic, i); 1566 intr = enic_msix_rq_intr(enic, i);
1567 snprintf(enic->msix[intr].devname, 1567 snprintf(enic->msix[intr].devname,
1568 sizeof(enic->msix[intr].devname), 1568 sizeof(enic->msix[intr].devname),
1569 "%.11s-rx-%d", netdev->name, i); 1569 "%.11s-rx-%u", netdev->name, i);
1570 enic->msix[intr].isr = enic_isr_msix; 1570 enic->msix[intr].isr = enic_isr_msix;
1571 enic->msix[intr].devid = &enic->napi[i]; 1571 enic->msix[intr].devid = &enic->napi[i];
1572 } 1572 }
@@ -1577,7 +1577,7 @@ static int enic_request_intr(struct enic *enic)
1577 intr = enic_msix_wq_intr(enic, i); 1577 intr = enic_msix_wq_intr(enic, i);
1578 snprintf(enic->msix[intr].devname, 1578 snprintf(enic->msix[intr].devname,
1579 sizeof(enic->msix[intr].devname), 1579 sizeof(enic->msix[intr].devname),
1580 "%.11s-tx-%d", netdev->name, i); 1580 "%.11s-tx-%u", netdev->name, i);
1581 enic->msix[intr].isr = enic_isr_msix; 1581 enic->msix[intr].isr = enic_isr_msix;
1582 enic->msix[intr].devid = &enic->napi[wq]; 1582 enic->msix[intr].devid = &enic->napi[wq];
1583 } 1583 }
diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
index cbe84972ff7a..f0e9e2ef62a0 100644
--- a/drivers/net/ethernet/dec/tulip/de4x5.c
+++ b/drivers/net/ethernet/dec/tulip/de4x5.c
@@ -1319,7 +1319,7 @@ de4x5_open(struct net_device *dev)
1319 1319
1320 if (request_irq(dev->irq, de4x5_interrupt, IRQF_SHARED, 1320 if (request_irq(dev->irq, de4x5_interrupt, IRQF_SHARED,
1321 lp->adapter_name, dev)) { 1321 lp->adapter_name, dev)) {
1322 printk("de4x5_open(): Requested IRQ%d is busy - attemping FAST/SHARE...", dev->irq); 1322 printk("de4x5_open(): Requested IRQ%d is busy - attempting FAST/SHARE...", dev->irq);
1323 if (request_irq(dev->irq, de4x5_interrupt, IRQF_SHARED, 1323 if (request_irq(dev->irq, de4x5_interrupt, IRQF_SHARED,
1324 lp->adapter_name, dev)) { 1324 lp->adapter_name, dev)) {
1325 printk("\n Cannot get IRQ- reconfigure your hardware.\n"); 1325 printk("\n Cannot get IRQ- reconfigure your hardware.\n");
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
index 3fb87e233c49..5c8afe1a5ccb 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
@@ -795,6 +795,7 @@ static int hns_mac_get_info(struct hns_mac_cb *mac_cb)
795 dev_dbg(mac_cb->dev, "mac%d phy_node: %s\n", 795 dev_dbg(mac_cb->dev, "mac%d phy_node: %s\n",
796 mac_cb->mac_id, np->name); 796 mac_cb->mac_id, np->name);
797 } 797 }
798 of_node_put(np);
798 799
799 return 0; 800 return 0;
800 } 801 }
@@ -812,10 +813,12 @@ static int hns_mac_get_info(struct hns_mac_cb *mac_cb)
812 dev_dbg(mac_cb->dev, "mac%d phy_node: %s\n", 813 dev_dbg(mac_cb->dev, "mac%d phy_node: %s\n",
813 mac_cb->mac_id, np->name); 814 mac_cb->mac_id, np->name);
814 } 815 }
816 of_node_put(np);
815 817
816 syscon = syscon_node_to_regmap( 818 np = of_parse_phandle(to_of_node(mac_cb->fw_port),
817 of_parse_phandle(to_of_node(mac_cb->fw_port), 819 "serdes-syscon", 0);
818 "serdes-syscon", 0)); 820 syscon = syscon_node_to_regmap(np);
821 of_node_put(np);
819 if (IS_ERR_OR_NULL(syscon)) { 822 if (IS_ERR_OR_NULL(syscon)) {
820 dev_err(mac_cb->dev, "serdes-syscon is needed!\n"); 823 dev_err(mac_cb->dev, "serdes-syscon is needed!\n");
821 return -EINVAL; 824 return -EINVAL;
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
index 2ef4277d00b3..afb5daa3721d 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
@@ -51,7 +51,7 @@ int hns_dsaf_get_cfg(struct dsaf_device *dsaf_dev)
51 const char *mode_str; 51 const char *mode_str;
52 struct regmap *syscon; 52 struct regmap *syscon;
53 struct resource *res; 53 struct resource *res;
54 struct device_node *np = dsaf_dev->dev->of_node; 54 struct device_node *np = dsaf_dev->dev->of_node, *np_temp;
55 struct platform_device *pdev = to_platform_device(dsaf_dev->dev); 55 struct platform_device *pdev = to_platform_device(dsaf_dev->dev);
56 56
57 if (dev_of_node(dsaf_dev->dev)) { 57 if (dev_of_node(dsaf_dev->dev)) {
@@ -102,8 +102,9 @@ int hns_dsaf_get_cfg(struct dsaf_device *dsaf_dev)
102 dsaf_dev->dsaf_tc_mode = HRD_DSAF_4TC_MODE; 102 dsaf_dev->dsaf_tc_mode = HRD_DSAF_4TC_MODE;
103 103
104 if (dev_of_node(dsaf_dev->dev)) { 104 if (dev_of_node(dsaf_dev->dev)) {
105 syscon = syscon_node_to_regmap( 105 np_temp = of_parse_phandle(np, "subctrl-syscon", 0);
106 of_parse_phandle(np, "subctrl-syscon", 0)); 106 syscon = syscon_node_to_regmap(np_temp);
107 of_node_put(np_temp);
107 if (IS_ERR_OR_NULL(syscon)) { 108 if (IS_ERR_OR_NULL(syscon)) {
108 res = platform_get_resource(pdev, IORESOURCE_MEM, 109 res = platform_get_resource(pdev, IORESOURCE_MEM,
109 res_idx++); 110 res_idx++);
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index f92018b13d28..d41c28d00b57 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -4118,6 +4118,7 @@ static int mvneta_probe(struct platform_device *pdev)
4118 pp->bm_priv = NULL; 4118 pp->bm_priv = NULL;
4119 } 4119 }
4120 } 4120 }
4121 of_node_put(bm_node);
4121 4122
4122 err = mvneta_init(&pdev->dev, pp); 4123 err = mvneta_init(&pdev->dev, pp);
4123 if (err < 0) 4124 if (err < 0)
diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c
index 0b047178cda1..60227a3452a4 100644
--- a/drivers/net/ethernet/marvell/mvpp2.c
+++ b/drivers/net/ethernet/marvell/mvpp2.c
@@ -6234,6 +6234,7 @@ err_free_stats:
6234err_free_irq: 6234err_free_irq:
6235 irq_dispose_mapping(port->irq); 6235 irq_dispose_mapping(port->irq);
6236err_free_netdev: 6236err_free_netdev:
6237 of_node_put(phy_node);
6237 free_netdev(dev); 6238 free_netdev(dev);
6238 return err; 6239 return err;
6239} 6240}
@@ -6244,6 +6245,7 @@ static void mvpp2_port_remove(struct mvpp2_port *port)
6244 int i; 6245 int i;
6245 6246
6246 unregister_netdev(port->dev); 6247 unregister_netdev(port->dev);
6248 of_node_put(port->phy_node);
6247 free_percpu(port->pcpu); 6249 free_percpu(port->pcpu);
6248 free_percpu(port->stats); 6250 free_percpu(port->stats);
6249 for (i = 0; i < txq_number; i++) 6251 for (i = 0; i < txq_number; i++)
diff --git a/drivers/net/ethernet/marvell/pxa168_eth.c b/drivers/net/ethernet/marvell/pxa168_eth.c
index aeeb2e79a91a..5d5000c8edf1 100644
--- a/drivers/net/ethernet/marvell/pxa168_eth.c
+++ b/drivers/net/ethernet/marvell/pxa168_eth.c
@@ -1506,6 +1506,7 @@ static int pxa168_eth_probe(struct platform_device *pdev)
1506 } 1506 }
1507 of_property_read_u32(np, "reg", &pep->phy_addr); 1507 of_property_read_u32(np, "reg", &pep->phy_addr);
1508 pep->phy_intf = of_get_phy_mode(pdev->dev.of_node); 1508 pep->phy_intf = of_get_phy_mode(pdev->dev.of_node);
1509 of_node_put(np);
1509 } 1510 }
1510 1511
1511 /* Hardware supports only 3 ports */ 1512 /* Hardware supports only 3 ports */
diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
index 2874dffe77de..eaa37c079a7c 100644
--- a/drivers/net/ethernet/neterion/s2io.c
+++ b/drivers/net/ethernet/neterion/s2io.c
@@ -7412,7 +7412,7 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp)
7412 7412
7413 if ((rxdp->Control_1 & TCP_OR_UDP_FRAME) && 7413 if ((rxdp->Control_1 & TCP_OR_UDP_FRAME) &&
7414 ((!ring_data->lro) || 7414 ((!ring_data->lro) ||
7415 (ring_data->lro && (!(rxdp->Control_1 & RXD_FRAME_IP_FRAG)))) && 7415 (!(rxdp->Control_1 & RXD_FRAME_IP_FRAG))) &&
7416 (dev->features & NETIF_F_RXCSUM)) { 7416 (dev->features & NETIF_F_RXCSUM)) {
7417 l3_csum = RXD_GET_L3_CKSUM(rxdp->Control_1); 7417 l3_csum = RXD_GET_L3_CKSUM(rxdp->Control_1);
7418 l4_csum = RXD_GET_L4_CKSUM(rxdp->Control_1); 7418 l4_csum = RXD_GET_L4_CKSUM(rxdp->Control_1);
diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c
index b26fe267a150..0e4f4a9306b5 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
@@ -509,6 +509,7 @@ int qed_resc_alloc(struct qed_dev *cdev)
509 DP_ERR(p_hwfn, 509 DP_ERR(p_hwfn,
510 "Cannot allocate 0x%x EQ elements. The maximum of a u16 chain is 0x%x\n", 510 "Cannot allocate 0x%x EQ elements. The maximum of a u16 chain is 0x%x\n",
511 n_eqes, 0xFFFF); 511 n_eqes, 0xFFFF);
512 rc = -EINVAL;
512 goto alloc_err; 513 goto alloc_err;
513 } 514 }
514 515
@@ -888,7 +889,7 @@ static int qed_hw_init_pf(struct qed_hwfn *p_hwfn,
888 889
889 if (hw_mode & (1 << MODE_MF_SI)) { 890 if (hw_mode & (1 << MODE_MF_SI)) {
890 u8 pf_id = 0; 891 u8 pf_id = 0;
891 u32 val; 892 u32 val = 0;
892 893
893 if (!qed_hw_init_first_eth(p_hwfn, p_ptt, &pf_id)) { 894 if (!qed_hw_init_first_eth(p_hwfn, p_ptt, &pf_id)) {
894 if (p_hwfn->rel_pf_id == pf_id) { 895 if (p_hwfn->rel_pf_id == pf_id) {
@@ -2539,7 +2540,7 @@ int qed_configure_vport_wfq(struct qed_dev *cdev, u16 vp_id, u32 rate)
2539 2540
2540 rc = __qed_configure_vport_wfq(p_hwfn, p_ptt, vp_id, rate); 2541 rc = __qed_configure_vport_wfq(p_hwfn, p_ptt, vp_id, rate);
2541 2542
2542 if (!rc) { 2543 if (rc) {
2543 qed_ptt_release(p_hwfn, p_ptt); 2544 qed_ptt_release(p_hwfn, p_ptt);
2544 return rc; 2545 return rc;
2545 } 2546 }
diff --git a/drivers/net/ethernet/qlogic/qed/qed_l2.c b/drivers/net/ethernet/qlogic/qed/qed_l2.c
index a12c6caa6c66..401e738543b5 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_l2.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_l2.c
@@ -590,7 +590,7 @@ qed_sp_eth_rx_queue_start(struct qed_hwfn *p_hwfn,
590 u16 cqe_pbl_size, void __iomem **pp_prod) 590 u16 cqe_pbl_size, void __iomem **pp_prod)
591{ 591{
592 struct qed_hw_cid_data *p_rx_cid; 592 struct qed_hw_cid_data *p_rx_cid;
593 u64 init_prod_val = 0; 593 u32 init_prod_val = 0;
594 u16 abs_l2_queue = 0; 594 u16 abs_l2_queue = 0;
595 u8 abs_stats_id = 0; 595 u8 abs_stats_id = 0;
596 int rc; 596 int rc;
@@ -618,7 +618,7 @@ qed_sp_eth_rx_queue_start(struct qed_hwfn *p_hwfn,
618 MSTORM_ETH_PF_PRODS_OFFSET(abs_l2_queue); 618 MSTORM_ETH_PF_PRODS_OFFSET(abs_l2_queue);
619 619
620 /* Init the rcq, rx bd and rx sge (if valid) producers to 0 */ 620 /* Init the rcq, rx bd and rx sge (if valid) producers to 0 */
621 __internal_ram_wr(p_hwfn, *pp_prod, sizeof(u64), 621 __internal_ram_wr(p_hwfn, *pp_prod, sizeof(u32),
622 (u32 *)(&init_prod_val)); 622 (u32 *)(&init_prod_val));
623 623
624 /* Allocate a CID for the queue */ 624 /* Allocate a CID for the queue */
@@ -1664,6 +1664,8 @@ static int qed_fill_eth_dev_info(struct qed_dev *cdev,
1664 info->num_tc = 1; 1664 info->num_tc = 1;
1665 1665
1666 if (IS_PF(cdev)) { 1666 if (IS_PF(cdev)) {
1667 int max_vf_vlan_filters = 0;
1668
1667 if (cdev->int_params.out.int_mode == QED_INT_MODE_MSIX) { 1669 if (cdev->int_params.out.int_mode == QED_INT_MODE_MSIX) {
1668 for_each_hwfn(cdev, i) 1670 for_each_hwfn(cdev, i)
1669 info->num_queues += 1671 info->num_queues +=
@@ -1676,7 +1678,12 @@ static int qed_fill_eth_dev_info(struct qed_dev *cdev,
1676 info->num_queues = cdev->num_hwfns; 1678 info->num_queues = cdev->num_hwfns;
1677 } 1679 }
1678 1680
1679 info->num_vlan_filters = RESC_NUM(&cdev->hwfns[0], QED_VLAN); 1681 if (IS_QED_SRIOV(cdev))
1682 max_vf_vlan_filters = cdev->p_iov_info->total_vfs *
1683 QED_ETH_VF_NUM_VLAN_FILTERS;
1684 info->num_vlan_filters = RESC_NUM(&cdev->hwfns[0], QED_VLAN) -
1685 max_vf_vlan_filters;
1686
1680 ether_addr_copy(info->port_mac, 1687 ether_addr_copy(info->port_mac,
1681 cdev->hwfns[0].hw_info.hw_mac_addr); 1688 cdev->hwfns[0].hw_info.hw_mac_addr);
1682 } else { 1689 } else {
diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
index 1f13abb5c316..c7dc34bfdd0a 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
@@ -659,8 +659,13 @@ static int qed_slowpath_setup_int(struct qed_dev *cdev,
659 struct qed_sb_cnt_info sb_cnt_info; 659 struct qed_sb_cnt_info sb_cnt_info;
660 int rc; 660 int rc;
661 int i; 661 int i;
662 memset(&cdev->int_params, 0, sizeof(struct qed_int_params));
663 662
663 if ((int_mode == QED_INT_MODE_MSI) && (cdev->num_hwfns > 1)) {
664 DP_NOTICE(cdev, "MSI mode is not supported for CMT devices\n");
665 return -EINVAL;
666 }
667
668 memset(&cdev->int_params, 0, sizeof(struct qed_int_params));
664 cdev->int_params.in.int_mode = int_mode; 669 cdev->int_params.in.int_mode = int_mode;
665 for_each_hwfn(cdev, i) { 670 for_each_hwfn(cdev, i) {
666 memset(&sb_cnt_info, 0, sizeof(sb_cnt_info)); 671 memset(&sb_cnt_info, 0, sizeof(sb_cnt_info));
diff --git a/drivers/net/ethernet/qlogic/qed/qed_sriov.c b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
index 4d161c751c12..15399da268d9 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_sriov.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
@@ -1404,7 +1404,7 @@ static int __qed_iov_spoofchk_set(struct qed_hwfn *p_hwfn,
1404 params.anti_spoofing_en = val; 1404 params.anti_spoofing_en = val;
1405 1405
1406 rc = qed_sp_vport_update(p_hwfn, &params, QED_SPQ_MODE_EBLOCK, NULL); 1406 rc = qed_sp_vport_update(p_hwfn, &params, QED_SPQ_MODE_EBLOCK, NULL);
1407 if (rc) { 1407 if (!rc) {
1408 p_vf->spoof_chk = val; 1408 p_vf->spoof_chk = val;
1409 p_vf->req_spoofchk_val = p_vf->spoof_chk; 1409 p_vf->req_spoofchk_val = p_vf->spoof_chk;
1410 DP_VERBOSE(p_hwfn, QED_MSG_IOV, 1410 DP_VERBOSE(p_hwfn, QED_MSG_IOV,
diff --git a/drivers/net/ethernet/qlogic/qed/qed_vf.c b/drivers/net/ethernet/qlogic/qed/qed_vf.c
index 9819230947bf..9b780b31b15c 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_vf.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_vf.c
@@ -388,7 +388,7 @@ int qed_vf_pf_rxq_start(struct qed_hwfn *p_hwfn,
388 388
389 /* Learn the address of the producer from the response */ 389 /* Learn the address of the producer from the response */
390 if (pp_prod) { 390 if (pp_prod) {
391 u64 init_prod_val = 0; 391 u32 init_prod_val = 0;
392 392
393 *pp_prod = (u8 __iomem *)p_hwfn->regview + resp->offset; 393 *pp_prod = (u8 __iomem *)p_hwfn->regview + resp->offset;
394 DP_VERBOSE(p_hwfn, QED_MSG_IOV, 394 DP_VERBOSE(p_hwfn, QED_MSG_IOV,
@@ -396,7 +396,7 @@ int qed_vf_pf_rxq_start(struct qed_hwfn *p_hwfn,
396 rx_qid, *pp_prod, resp->offset); 396 rx_qid, *pp_prod, resp->offset);
397 397
398 /* Init the rcq, rx bd and rx sge (if valid) producers to 0 */ 398 /* Init the rcq, rx bd and rx sge (if valid) producers to 0 */
399 __internal_ram_wr(p_hwfn, *pp_prod, sizeof(u64), 399 __internal_ram_wr(p_hwfn, *pp_prod, sizeof(u32),
400 (u32 *)&init_prod_val); 400 (u32 *)&init_prod_val);
401 } 401 }
402 402
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 91e7bb0b85c8..e4bd02e46e57 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -2064,10 +2064,13 @@ static int qede_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid)
2064 } 2064 }
2065 2065
2066 /* Remove vlan */ 2066 /* Remove vlan */
2067 rc = qede_set_ucast_rx_vlan(edev, QED_FILTER_XCAST_TYPE_DEL, vid); 2067 if (vlan->configured) {
2068 if (rc) { 2068 rc = qede_set_ucast_rx_vlan(edev, QED_FILTER_XCAST_TYPE_DEL,
2069 DP_ERR(edev, "Failed to remove VLAN %d\n", vid); 2069 vid);
2070 return -EINVAL; 2070 if (rc) {
2071 DP_ERR(edev, "Failed to remove VLAN %d\n", vid);
2072 return -EINVAL;
2073 }
2071 } 2074 }
2072 2075
2073 qede_del_vlan_from_list(edev, vlan); 2076 qede_del_vlan_from_list(edev, vlan);
@@ -3268,6 +3271,7 @@ static int qede_start_queues(struct qede_dev *edev, bool clear_stats)
3268 start.vport_id = 0; 3271 start.vport_id = 0;
3269 start.drop_ttl0 = true; 3272 start.drop_ttl0 = true;
3270 start.remove_inner_vlan = vlan_removal_en; 3273 start.remove_inner_vlan = vlan_removal_en;
3274 start.clear_stats = clear_stats;
3271 3275
3272 rc = edev->ops->vport_start(cdev, &start); 3276 rc = edev->ops->vport_start(cdev, &start);
3273 3277
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
index 9777e5713525..f4aa6331b367 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
@@ -45,7 +45,6 @@ struct qlcnic_dcb {
45static inline void qlcnic_clear_dcb_ops(struct qlcnic_dcb *dcb) 45static inline void qlcnic_clear_dcb_ops(struct qlcnic_dcb *dcb)
46{ 46{
47 kfree(dcb); 47 kfree(dcb);
48 dcb = NULL;
49} 48}
50 49
51static inline int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb) 50static inline int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index fd5d1c93b55b..fd4a8e473f11 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -1892,7 +1892,6 @@ static struct sk_buff *ql_build_rx_skb(struct ql_adapter *qdev,
1892 skb->len += length; 1892 skb->len += length;
1893 skb->data_len += length; 1893 skb->data_len += length;
1894 skb->truesize += length; 1894 skb->truesize += length;
1895 length -= length;
1896 ql_update_mac_hdr_len(qdev, ib_mac_rsp, 1895 ql_update_mac_hdr_len(qdev, ib_mac_rsp,
1897 lbq_desc->p.pg_chunk.va, 1896 lbq_desc->p.pg_chunk.va,
1898 &hlen); 1897 &hlen);
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index ef668d300800..da4c2d8a4173 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -1667,6 +1667,10 @@ static void rtl8139_tx_timeout_task (struct work_struct *work)
1667 int i; 1667 int i;
1668 u8 tmp8; 1668 u8 tmp8;
1669 1669
1670 napi_disable(&tp->napi);
1671 netif_stop_queue(dev);
1672 synchronize_sched();
1673
1670 netdev_dbg(dev, "Transmit timeout, status %02x %04x %04x media %02x\n", 1674 netdev_dbg(dev, "Transmit timeout, status %02x %04x %04x media %02x\n",
1671 RTL_R8(ChipCmd), RTL_R16(IntrStatus), 1675 RTL_R8(ChipCmd), RTL_R16(IntrStatus),
1672 RTL_R16(IntrMask), RTL_R8(MediaStatus)); 1676 RTL_R16(IntrMask), RTL_R8(MediaStatus));
@@ -1696,10 +1700,10 @@ static void rtl8139_tx_timeout_task (struct work_struct *work)
1696 spin_unlock_irq(&tp->lock); 1700 spin_unlock_irq(&tp->lock);
1697 1701
1698 /* ...and finally, reset everything */ 1702 /* ...and finally, reset everything */
1699 if (netif_running(dev)) { 1703 napi_enable(&tp->napi);
1700 rtl8139_hw_start (dev); 1704 rtl8139_hw_start(dev);
1701 netif_wake_queue (dev); 1705 netif_wake_queue(dev);
1702 } 1706
1703 spin_unlock_bh(&tp->rx_lock); 1707 spin_unlock_bh(&tp->rx_lock);
1704} 1708}
1705 1709
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index 0e62d74b09b3..e55638c7505a 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -1749,13 +1749,21 @@ static u32 __rtl8169_get_wol(struct rtl8169_private *tp)
1749static void rtl8169_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) 1749static void rtl8169_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
1750{ 1750{
1751 struct rtl8169_private *tp = netdev_priv(dev); 1751 struct rtl8169_private *tp = netdev_priv(dev);
1752 struct device *d = &tp->pci_dev->dev;
1753
1754 pm_runtime_get_noresume(d);
1752 1755
1753 rtl_lock_work(tp); 1756 rtl_lock_work(tp);
1754 1757
1755 wol->supported = WAKE_ANY; 1758 wol->supported = WAKE_ANY;
1756 wol->wolopts = __rtl8169_get_wol(tp); 1759 if (pm_runtime_active(d))
1760 wol->wolopts = __rtl8169_get_wol(tp);
1761 else
1762 wol->wolopts = tp->saved_wolopts;
1757 1763
1758 rtl_unlock_work(tp); 1764 rtl_unlock_work(tp);
1765
1766 pm_runtime_put_noidle(d);
1759} 1767}
1760 1768
1761static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts) 1769static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
@@ -1845,6 +1853,9 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
1845static int rtl8169_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) 1853static int rtl8169_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
1846{ 1854{
1847 struct rtl8169_private *tp = netdev_priv(dev); 1855 struct rtl8169_private *tp = netdev_priv(dev);
1856 struct device *d = &tp->pci_dev->dev;
1857
1858 pm_runtime_get_noresume(d);
1848 1859
1849 rtl_lock_work(tp); 1860 rtl_lock_work(tp);
1850 1861
@@ -1852,12 +1863,17 @@ static int rtl8169_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
1852 tp->features |= RTL_FEATURE_WOL; 1863 tp->features |= RTL_FEATURE_WOL;
1853 else 1864 else
1854 tp->features &= ~RTL_FEATURE_WOL; 1865 tp->features &= ~RTL_FEATURE_WOL;
1855 __rtl8169_set_wol(tp, wol->wolopts); 1866 if (pm_runtime_active(d))
1867 __rtl8169_set_wol(tp, wol->wolopts);
1868 else
1869 tp->saved_wolopts = wol->wolopts;
1856 1870
1857 rtl_unlock_work(tp); 1871 rtl_unlock_work(tp);
1858 1872
1859 device_set_wakeup_enable(&tp->pci_dev->dev, wol->wolopts); 1873 device_set_wakeup_enable(&tp->pci_dev->dev, wol->wolopts);
1860 1874
1875 pm_runtime_put_noidle(d);
1876
1861 return 0; 1877 return 0;
1862} 1878}
1863 1879
@@ -2292,11 +2308,17 @@ static void rtl8169_get_ethtool_stats(struct net_device *dev,
2292 struct ethtool_stats *stats, u64 *data) 2308 struct ethtool_stats *stats, u64 *data)
2293{ 2309{
2294 struct rtl8169_private *tp = netdev_priv(dev); 2310 struct rtl8169_private *tp = netdev_priv(dev);
2311 struct device *d = &tp->pci_dev->dev;
2295 struct rtl8169_counters *counters = tp->counters; 2312 struct rtl8169_counters *counters = tp->counters;
2296 2313
2297 ASSERT_RTNL(); 2314 ASSERT_RTNL();
2298 2315
2299 rtl8169_update_counters(dev); 2316 pm_runtime_get_noresume(d);
2317
2318 if (pm_runtime_active(d))
2319 rtl8169_update_counters(dev);
2320
2321 pm_runtime_put_noidle(d);
2300 2322
2301 data[0] = le64_to_cpu(counters->tx_packets); 2323 data[0] = le64_to_cpu(counters->tx_packets);
2302 data[1] = le64_to_cpu(counters->rx_packets); 2324 data[1] = le64_to_cpu(counters->rx_packets);
@@ -4458,6 +4480,7 @@ static void rtl_rar_set(struct rtl8169_private *tp, u8 *addr)
4458static int rtl_set_mac_address(struct net_device *dev, void *p) 4480static int rtl_set_mac_address(struct net_device *dev, void *p)
4459{ 4481{
4460 struct rtl8169_private *tp = netdev_priv(dev); 4482 struct rtl8169_private *tp = netdev_priv(dev);
4483 struct device *d = &tp->pci_dev->dev;
4461 struct sockaddr *addr = p; 4484 struct sockaddr *addr = p;
4462 4485
4463 if (!is_valid_ether_addr(addr->sa_data)) 4486 if (!is_valid_ether_addr(addr->sa_data))
@@ -4465,7 +4488,12 @@ static int rtl_set_mac_address(struct net_device *dev, void *p)
4465 4488
4466 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); 4489 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
4467 4490
4468 rtl_rar_set(tp, dev->dev_addr); 4491 pm_runtime_get_noresume(d);
4492
4493 if (pm_runtime_active(d))
4494 rtl_rar_set(tp, dev->dev_addr);
4495
4496 pm_runtime_put_noidle(d);
4469 4497
4470 return 0; 4498 return 0;
4471} 4499}
@@ -7868,6 +7896,7 @@ static int rtl8169_runtime_resume(struct device *device)
7868 struct pci_dev *pdev = to_pci_dev(device); 7896 struct pci_dev *pdev = to_pci_dev(device);
7869 struct net_device *dev = pci_get_drvdata(pdev); 7897 struct net_device *dev = pci_get_drvdata(pdev);
7870 struct rtl8169_private *tp = netdev_priv(dev); 7898 struct rtl8169_private *tp = netdev_priv(dev);
7899 rtl_rar_set(tp, dev->dev_addr);
7871 7900
7872 if (!tp->TxDescArray) 7901 if (!tp->TxDescArray)
7873 return 0; 7902 return 0;
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 8377d0220fa8..1e1cc0fad17f 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1005,6 +1005,7 @@ static int ravb_phy_init(struct net_device *ndev)
1005 } 1005 }
1006 phydev = of_phy_connect(ndev, pn, ravb_adjust_link, 0, 1006 phydev = of_phy_connect(ndev, pn, ravb_adjust_link, 0,
1007 priv->phy_interface); 1007 priv->phy_interface);
1008 of_node_put(pn);
1008 if (!phydev) { 1009 if (!phydev) {
1009 netdev_err(ndev, "failed to connect PHY\n"); 1010 netdev_err(ndev, "failed to connect PHY\n");
1010 return -ENOENT; 1011 return -ENOENT;
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index 7bd910ce8b34..799d58d86e6d 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -1780,6 +1780,7 @@ static int sh_eth_phy_init(struct net_device *ndev)
1780 sh_eth_adjust_link, 0, 1780 sh_eth_adjust_link, 0,
1781 mdp->phy_interface); 1781 mdp->phy_interface);
1782 1782
1783 of_node_put(pn);
1783 if (!phydev) 1784 if (!phydev)
1784 phydev = ERR_PTR(-ENOENT); 1785 phydev = ERR_PTR(-ENOENT);
1785 } else { 1786 } else {
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
index edd20c3b2b3d..bec6963ac71e 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
@@ -135,7 +135,9 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
135 135
136 np_splitter = of_parse_phandle(np, "altr,emac-splitter", 0); 136 np_splitter = of_parse_phandle(np, "altr,emac-splitter", 0);
137 if (np_splitter) { 137 if (np_splitter) {
138 if (of_address_to_resource(np_splitter, 0, &res_splitter)) { 138 ret = of_address_to_resource(np_splitter, 0, &res_splitter);
139 of_node_put(np_splitter);
140 if (ret) {
139 dev_info(dev, "Missing emac splitter address\n"); 141 dev_info(dev, "Missing emac splitter address\n");
140 return -EINVAL; 142 return -EINVAL;
141 } 143 }
@@ -159,14 +161,17 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
159 dev_err(dev, 161 dev_err(dev,
160 "%s: ERROR: missing emac splitter address\n", 162 "%s: ERROR: missing emac splitter address\n",
161 __func__); 163 __func__);
162 return -EINVAL; 164 ret = -EINVAL;
165 goto err_node_put;
163 } 166 }
164 167
165 dwmac->splitter_base = 168 dwmac->splitter_base =
166 devm_ioremap_resource(dev, &res_splitter); 169 devm_ioremap_resource(dev, &res_splitter);
167 170
168 if (IS_ERR(dwmac->splitter_base)) 171 if (IS_ERR(dwmac->splitter_base)) {
169 return PTR_ERR(dwmac->splitter_base); 172 ret = PTR_ERR(dwmac->splitter_base);
173 goto err_node_put;
174 }
170 } 175 }
171 176
172 index = of_property_match_string(np_sgmii_adapter, "reg-names", 177 index = of_property_match_string(np_sgmii_adapter, "reg-names",
@@ -178,14 +183,17 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
178 dev_err(dev, 183 dev_err(dev,
179 "%s: ERROR: failed mapping adapter\n", 184 "%s: ERROR: failed mapping adapter\n",
180 __func__); 185 __func__);
181 return -EINVAL; 186 ret = -EINVAL;
187 goto err_node_put;
182 } 188 }
183 189
184 dwmac->pcs.sgmii_adapter_base = 190 dwmac->pcs.sgmii_adapter_base =
185 devm_ioremap_resource(dev, &res_sgmii_adapter); 191 devm_ioremap_resource(dev, &res_sgmii_adapter);
186 192
187 if (IS_ERR(dwmac->pcs.sgmii_adapter_base)) 193 if (IS_ERR(dwmac->pcs.sgmii_adapter_base)) {
188 return PTR_ERR(dwmac->pcs.sgmii_adapter_base); 194 ret = PTR_ERR(dwmac->pcs.sgmii_adapter_base);
195 goto err_node_put;
196 }
189 } 197 }
190 198
191 index = of_property_match_string(np_sgmii_adapter, "reg-names", 199 index = of_property_match_string(np_sgmii_adapter, "reg-names",
@@ -197,22 +205,30 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
197 dev_err(dev, 205 dev_err(dev,
198 "%s: ERROR: failed mapping tse control port\n", 206 "%s: ERROR: failed mapping tse control port\n",
199 __func__); 207 __func__);
200 return -EINVAL; 208 ret = -EINVAL;
209 goto err_node_put;
201 } 210 }
202 211
203 dwmac->pcs.tse_pcs_base = 212 dwmac->pcs.tse_pcs_base =
204 devm_ioremap_resource(dev, &res_tse_pcs); 213 devm_ioremap_resource(dev, &res_tse_pcs);
205 214
206 if (IS_ERR(dwmac->pcs.tse_pcs_base)) 215 if (IS_ERR(dwmac->pcs.tse_pcs_base)) {
207 return PTR_ERR(dwmac->pcs.tse_pcs_base); 216 ret = PTR_ERR(dwmac->pcs.tse_pcs_base);
217 goto err_node_put;
218 }
208 } 219 }
209 } 220 }
210 dwmac->reg_offset = reg_offset; 221 dwmac->reg_offset = reg_offset;
211 dwmac->reg_shift = reg_shift; 222 dwmac->reg_shift = reg_shift;
212 dwmac->sys_mgr_base_addr = sys_mgr_base_addr; 223 dwmac->sys_mgr_base_addr = sys_mgr_base_addr;
213 dwmac->dev = dev; 224 dwmac->dev = dev;
225 of_node_put(np_sgmii_adapter);
214 226
215 return 0; 227 return 0;
228
229err_node_put:
230 of_node_put(np_sgmii_adapter);
231 return ret;
216} 232}
217 233
218static int socfpga_dwmac_set_phy_mode(struct socfpga_dwmac *dwmac) 234static int socfpga_dwmac_set_phy_mode(struct socfpga_dwmac *dwmac)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index c23ccabc2d8a..4c8c60af7985 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3397,6 +3397,7 @@ int stmmac_dvr_remove(struct device *dev)
3397 stmmac_set_mac(priv->ioaddr, false); 3397 stmmac_set_mac(priv->ioaddr, false);
3398 netif_carrier_off(ndev); 3398 netif_carrier_off(ndev);
3399 unregister_netdev(ndev); 3399 unregister_netdev(ndev);
3400 of_node_put(priv->plat->phy_node);
3400 if (priv->stmmac_rst) 3401 if (priv->stmmac_rst)
3401 reset_control_assert(priv->stmmac_rst); 3402 reset_control_assert(priv->stmmac_rst);
3402 clk_disable_unprepare(priv->pclk); 3403 clk_disable_unprepare(priv->pclk);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
index f7dfc0ae8e9c..756bb548e81a 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
@@ -113,8 +113,10 @@ static struct stmmac_axi *stmmac_axi_setup(struct platform_device *pdev)
113 return NULL; 113 return NULL;
114 114
115 axi = kzalloc(sizeof(*axi), GFP_KERNEL); 115 axi = kzalloc(sizeof(*axi), GFP_KERNEL);
116 if (!axi) 116 if (!axi) {
117 of_node_put(np);
117 return ERR_PTR(-ENOMEM); 118 return ERR_PTR(-ENOMEM);
119 }
118 120
119 axi->axi_lpi_en = of_property_read_bool(np, "snps,lpi_en"); 121 axi->axi_lpi_en = of_property_read_bool(np, "snps,lpi_en");
120 axi->axi_xit_frm = of_property_read_bool(np, "snps,xit_frm"); 122 axi->axi_xit_frm = of_property_read_bool(np, "snps,xit_frm");
@@ -127,6 +129,7 @@ static struct stmmac_axi *stmmac_axi_setup(struct platform_device *pdev)
127 of_property_read_u32(np, "snps,wr_osr_lmt", &axi->axi_wr_osr_lmt); 129 of_property_read_u32(np, "snps,wr_osr_lmt", &axi->axi_wr_osr_lmt);
128 of_property_read_u32(np, "snps,rd_osr_lmt", &axi->axi_rd_osr_lmt); 130 of_property_read_u32(np, "snps,rd_osr_lmt", &axi->axi_rd_osr_lmt);
129 of_property_read_u32_array(np, "snps,blen", axi->axi_blen, AXI_BLEN); 131 of_property_read_u32_array(np, "snps,blen", axi->axi_blen, AXI_BLEN);
132 of_node_put(np);
130 133
131 return axi; 134 return axi;
132} 135}
@@ -302,7 +305,7 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac)
302 dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*dma_cfg), 305 dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*dma_cfg),
303 GFP_KERNEL); 306 GFP_KERNEL);
304 if (!dma_cfg) { 307 if (!dma_cfg) {
305 of_node_put(np); 308 of_node_put(plat->phy_node);
306 return ERR_PTR(-ENOMEM); 309 return ERR_PTR(-ENOMEM);
307 } 310 }
308 plat->dma_cfg = dma_cfg; 311 plat->dma_cfg = dma_cfg;
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index 1a93a1f28433..c51f34693eae 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -2564,19 +2564,17 @@ clean_ndev_ret:
2564 return ret; 2564 return ret;
2565} 2565}
2566 2566
2567static int cpsw_remove_child_device(struct device *dev, void *c)
2568{
2569 struct platform_device *pdev = to_platform_device(dev);
2570
2571 of_device_unregister(pdev);
2572
2573 return 0;
2574}
2575
2576static int cpsw_remove(struct platform_device *pdev) 2567static int cpsw_remove(struct platform_device *pdev)
2577{ 2568{
2578 struct net_device *ndev = platform_get_drvdata(pdev); 2569 struct net_device *ndev = platform_get_drvdata(pdev);
2579 struct cpsw_priv *priv = netdev_priv(ndev); 2570 struct cpsw_priv *priv = netdev_priv(ndev);
2571 int ret;
2572
2573 ret = pm_runtime_get_sync(&pdev->dev);
2574 if (ret < 0) {
2575 pm_runtime_put_noidle(&pdev->dev);
2576 return ret;
2577 }
2580 2578
2581 if (priv->data.dual_emac) 2579 if (priv->data.dual_emac)
2582 unregister_netdev(cpsw_get_slave_ndev(priv, 1)); 2580 unregister_netdev(cpsw_get_slave_ndev(priv, 1));
@@ -2584,8 +2582,9 @@ static int cpsw_remove(struct platform_device *pdev)
2584 2582
2585 cpsw_ale_destroy(priv->ale); 2583 cpsw_ale_destroy(priv->ale);
2586 cpdma_ctlr_destroy(priv->dma); 2584 cpdma_ctlr_destroy(priv->dma);
2585 of_platform_depopulate(&pdev->dev);
2586 pm_runtime_put_sync(&pdev->dev);
2587 pm_runtime_disable(&pdev->dev); 2587 pm_runtime_disable(&pdev->dev);
2588 device_for_each_child(&pdev->dev, NULL, cpsw_remove_child_device);
2589 if (priv->data.dual_emac) 2588 if (priv->data.dual_emac)
2590 free_netdev(cpsw_get_slave_ndev(priv, 1)); 2589 free_netdev(cpsw_get_slave_ndev(priv, 1));
2591 free_netdev(ndev); 2590 free_netdev(ndev);
diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c
index 73638f7a55d4..19e5f32a8a64 100644
--- a/drivers/net/ethernet/ti/davinci_cpdma.c
+++ b/drivers/net/ethernet/ti/davinci_cpdma.c
@@ -357,13 +357,11 @@ EXPORT_SYMBOL_GPL(cpdma_ctlr_stop);
357 357
358int cpdma_ctlr_destroy(struct cpdma_ctlr *ctlr) 358int cpdma_ctlr_destroy(struct cpdma_ctlr *ctlr)
359{ 359{
360 unsigned long flags;
361 int ret = 0, i; 360 int ret = 0, i;
362 361
363 if (!ctlr) 362 if (!ctlr)
364 return -EINVAL; 363 return -EINVAL;
365 364
366 spin_lock_irqsave(&ctlr->lock, flags);
367 if (ctlr->state != CPDMA_STATE_IDLE) 365 if (ctlr->state != CPDMA_STATE_IDLE)
368 cpdma_ctlr_stop(ctlr); 366 cpdma_ctlr_stop(ctlr);
369 367
@@ -371,7 +369,6 @@ int cpdma_ctlr_destroy(struct cpdma_ctlr *ctlr)
371 cpdma_chan_destroy(ctlr->channels[i]); 369 cpdma_chan_destroy(ctlr->channels[i]);
372 370
373 cpdma_desc_pool_destroy(ctlr->pool); 371 cpdma_desc_pool_destroy(ctlr->pool);
374 spin_unlock_irqrestore(&ctlr->lock, flags);
375 return ret; 372 return ret;
376} 373}
377EXPORT_SYMBOL_GPL(cpdma_ctlr_destroy); 374EXPORT_SYMBOL_GPL(cpdma_ctlr_destroy);
diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c
index 6e305a82ed43..727a79f3c7dd 100644
--- a/drivers/net/ethernet/ti/davinci_emac.c
+++ b/drivers/net/ethernet/ti/davinci_emac.c
@@ -1964,6 +1964,7 @@ static int davinci_emac_remove(struct platform_device *pdev)
1964 cpdma_ctlr_destroy(priv->dma); 1964 cpdma_ctlr_destroy(priv->dma);
1965 1965
1966 unregister_netdev(ndev); 1966 unregister_netdev(ndev);
1967 of_node_put(priv->phy_node);
1967 pm_runtime_disable(&pdev->dev); 1968 pm_runtime_disable(&pdev->dev);
1968 free_netdev(ndev); 1969 free_netdev(ndev);
1969 1970
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index 2d0beb1b801c..d13e6e15d7b5 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -344,7 +344,6 @@ static void free_rxsa(struct rcu_head *head)
344 344
345 crypto_free_aead(sa->key.tfm); 345 crypto_free_aead(sa->key.tfm);
346 free_percpu(sa->stats); 346 free_percpu(sa->stats);
347 macsec_rxsc_put(sa->sc);
348 kfree(sa); 347 kfree(sa);
349} 348}
350 349
@@ -863,6 +862,7 @@ static void macsec_decrypt_done(struct crypto_async_request *base, int err)
863 struct net_device *dev = skb->dev; 862 struct net_device *dev = skb->dev;
864 struct macsec_dev *macsec = macsec_priv(dev); 863 struct macsec_dev *macsec = macsec_priv(dev);
865 struct macsec_rx_sa *rx_sa = macsec_skb_cb(skb)->rx_sa; 864 struct macsec_rx_sa *rx_sa = macsec_skb_cb(skb)->rx_sa;
865 struct macsec_rx_sc *rx_sc = rx_sa->sc;
866 int len, ret; 866 int len, ret;
867 u32 pn; 867 u32 pn;
868 868
@@ -891,6 +891,7 @@ static void macsec_decrypt_done(struct crypto_async_request *base, int err)
891 891
892out: 892out:
893 macsec_rxsa_put(rx_sa); 893 macsec_rxsa_put(rx_sa);
894 macsec_rxsc_put(rx_sc);
894 dev_put(dev); 895 dev_put(dev);
895} 896}
896 897
@@ -1106,6 +1107,7 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb)
1106 1107
1107 list_for_each_entry_rcu(macsec, &rxd->secys, secys) { 1108 list_for_each_entry_rcu(macsec, &rxd->secys, secys) {
1108 struct macsec_rx_sc *sc = find_rx_sc(&macsec->secy, sci); 1109 struct macsec_rx_sc *sc = find_rx_sc(&macsec->secy, sci);
1110 sc = sc ? macsec_rxsc_get(sc) : NULL;
1109 1111
1110 if (sc) { 1112 if (sc) {
1111 secy = &macsec->secy; 1113 secy = &macsec->secy;
@@ -1180,8 +1182,10 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb)
1180 1182
1181 if (IS_ERR(skb)) { 1183 if (IS_ERR(skb)) {
1182 /* the decrypt callback needs the reference */ 1184 /* the decrypt callback needs the reference */
1183 if (PTR_ERR(skb) != -EINPROGRESS) 1185 if (PTR_ERR(skb) != -EINPROGRESS) {
1184 macsec_rxsa_put(rx_sa); 1186 macsec_rxsa_put(rx_sa);
1187 macsec_rxsc_put(rx_sc);
1188 }
1185 rcu_read_unlock(); 1189 rcu_read_unlock();
1186 *pskb = NULL; 1190 *pskb = NULL;
1187 return RX_HANDLER_CONSUMED; 1191 return RX_HANDLER_CONSUMED;
@@ -1197,6 +1201,7 @@ deliver:
1197 1201
1198 if (rx_sa) 1202 if (rx_sa)
1199 macsec_rxsa_put(rx_sa); 1203 macsec_rxsa_put(rx_sa);
1204 macsec_rxsc_put(rx_sc);
1200 1205
1201 ret = gro_cells_receive(&macsec->gro_cells, skb); 1206 ret = gro_cells_receive(&macsec->gro_cells, skb);
1202 if (ret == NET_RX_SUCCESS) 1207 if (ret == NET_RX_SUCCESS)
@@ -1212,6 +1217,7 @@ deliver:
1212drop: 1217drop:
1213 macsec_rxsa_put(rx_sa); 1218 macsec_rxsa_put(rx_sa);
1214drop_nosa: 1219drop_nosa:
1220 macsec_rxsc_put(rx_sc);
1215 rcu_read_unlock(); 1221 rcu_read_unlock();
1216drop_direct: 1222drop_direct:
1217 kfree_skb(skb); 1223 kfree_skb(skb);
@@ -1646,7 +1652,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info)
1646 1652
1647 rtnl_lock(); 1653 rtnl_lock();
1648 rx_sc = get_rxsc_from_nl(genl_info_net(info), attrs, tb_rxsc, &dev, &secy); 1654 rx_sc = get_rxsc_from_nl(genl_info_net(info), attrs, tb_rxsc, &dev, &secy);
1649 if (IS_ERR(rx_sc) || !macsec_rxsc_get(rx_sc)) { 1655 if (IS_ERR(rx_sc)) {
1650 rtnl_unlock(); 1656 rtnl_unlock();
1651 return PTR_ERR(rx_sc); 1657 return PTR_ERR(rx_sc);
1652 } 1658 }
@@ -3173,6 +3179,8 @@ static int macsec_newlink(struct net *net, struct net_device *dev,
3173 if (err < 0) 3179 if (err < 0)
3174 return err; 3180 return err;
3175 3181
3182 dev_hold(real_dev);
3183
3176 /* need to be already registered so that ->init has run and 3184 /* need to be already registered so that ->init has run and
3177 * the MAC addr is set 3185 * the MAC addr is set
3178 */ 3186 */
@@ -3201,8 +3209,6 @@ static int macsec_newlink(struct net *net, struct net_device *dev,
3201 3209
3202 macsec_generation++; 3210 macsec_generation++;
3203 3211
3204 dev_hold(real_dev);
3205
3206 return 0; 3212 return 0;
3207 3213
3208del_dev: 3214del_dev:
diff --git a/drivers/net/phy/mdio-xgene.c b/drivers/net/phy/mdio-xgene.c
index d94a978024d9..775674808249 100644
--- a/drivers/net/phy/mdio-xgene.c
+++ b/drivers/net/phy/mdio-xgene.c
@@ -345,10 +345,8 @@ static int xgene_mdio_probe(struct platform_device *pdev)
345 345
346 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 346 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
347 csr_base = devm_ioremap_resource(dev, res); 347 csr_base = devm_ioremap_resource(dev, res);
348 if (IS_ERR(csr_base)) { 348 if (IS_ERR(csr_base))
349 dev_err(dev, "Unable to retrieve mac CSR region\n");
350 return PTR_ERR(csr_base); 349 return PTR_ERR(csr_base);
351 }
352 pdata->mac_csr_addr = csr_base; 350 pdata->mac_csr_addr = csr_base;
353 pdata->mdio_csr_addr = csr_base + BLOCK_XG_MDIO_CSR_OFFSET; 351 pdata->mdio_csr_addr = csr_base + BLOCK_XG_MDIO_CSR_OFFSET;
354 pdata->diag_csr_addr = csr_base + BLOCK_DIAG_CSR_OFFSET; 352 pdata->diag_csr_addr = csr_base + BLOCK_DIAG_CSR_OFFSET;
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 059f13b60fe0..1882d9828c99 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -869,7 +869,7 @@ static struct phy_driver ksphy_driver[] = {
869}, { 869}, {
870 .phy_id = PHY_ID_KSZ8001, 870 .phy_id = PHY_ID_KSZ8001,
871 .name = "Micrel KSZ8001 or KS8721", 871 .name = "Micrel KSZ8001 or KS8721",
872 .phy_id_mask = 0x00ffffff, 872 .phy_id_mask = 0x00fffffc,
873 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause), 873 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause),
874 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT, 874 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
875 .driver_data = &ksz8041_type, 875 .driver_data = &ksz8041_type,
@@ -993,7 +993,7 @@ MODULE_LICENSE("GPL");
993static struct mdio_device_id __maybe_unused micrel_tbl[] = { 993static struct mdio_device_id __maybe_unused micrel_tbl[] = {
994 { PHY_ID_KSZ9021, 0x000ffffe }, 994 { PHY_ID_KSZ9021, 0x000ffffe },
995 { PHY_ID_KSZ9031, MICREL_PHY_ID_MASK }, 995 { PHY_ID_KSZ9031, MICREL_PHY_ID_MASK },
996 { PHY_ID_KSZ8001, 0x00ffffff }, 996 { PHY_ID_KSZ8001, 0x00fffffc },
997 { PHY_ID_KS8737, MICREL_PHY_ID_MASK }, 997 { PHY_ID_KS8737, MICREL_PHY_ID_MASK },
998 { PHY_ID_KSZ8021, 0x00ffffff }, 998 { PHY_ID_KSZ8021, 0x00ffffff },
999 { PHY_ID_KSZ8031, 0x00ffffff }, 999 { PHY_ID_KSZ8031, 0x00ffffff },
diff --git a/drivers/net/wan/fsl_ucc_hdlc.c b/drivers/net/wan/fsl_ucc_hdlc.c
index 2fc50ec453d0..6f044450b702 100644
--- a/drivers/net/wan/fsl_ucc_hdlc.c
+++ b/drivers/net/wan/fsl_ucc_hdlc.c
@@ -862,7 +862,7 @@ static int uhdlc_suspend(struct device *dev)
862static int uhdlc_resume(struct device *dev) 862static int uhdlc_resume(struct device *dev)
863{ 863{
864 struct ucc_hdlc_private *priv = dev_get_drvdata(dev); 864 struct ucc_hdlc_private *priv = dev_get_drvdata(dev);
865 struct ucc_tdm *utdm = priv->utdm; 865 struct ucc_tdm *utdm;
866 struct ucc_tdm_info *ut_info; 866 struct ucc_tdm_info *ut_info;
867 struct ucc_fast __iomem *uf_regs; 867 struct ucc_fast __iomem *uf_regs;
868 struct ucc_fast_private *uccf; 868 struct ucc_fast_private *uccf;
@@ -877,6 +877,7 @@ static int uhdlc_resume(struct device *dev)
877 if (!netif_running(priv->ndev)) 877 if (!netif_running(priv->ndev))
878 return 0; 878 return 0;
879 879
880 utdm = priv->utdm;
880 ut_info = priv->ut_info; 881 ut_info = priv->ut_info;
881 uf_info = &ut_info->uf_info; 882 uf_info = &ut_info->uf_info;
882 uf_regs = priv->uf_regs; 883 uf_regs = priv->uf_regs;
diff --git a/include/net/sctp/constants.h b/include/net/sctp/constants.h
index 8c337cd0e1e4..5b847e49f7e9 100644
--- a/include/net/sctp/constants.h
+++ b/include/net/sctp/constants.h
@@ -214,7 +214,7 @@ typedef enum {
214 SCTP_SS_LISTENING = TCP_LISTEN, 214 SCTP_SS_LISTENING = TCP_LISTEN,
215 SCTP_SS_ESTABLISHING = TCP_SYN_SENT, 215 SCTP_SS_ESTABLISHING = TCP_SYN_SENT,
216 SCTP_SS_ESTABLISHED = TCP_ESTABLISHED, 216 SCTP_SS_ESTABLISHED = TCP_ESTABLISHED,
217 SCTP_SS_CLOSING = TCP_CLOSING, 217 SCTP_SS_CLOSING = TCP_CLOSE_WAIT,
218} sctp_sock_state_t; 218} sctp_sock_state_t;
219 219
220/* These functions map various type to printable names. */ 220/* These functions map various type to printable names. */
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index b26aa870adc0..bdaef7fd6e47 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -236,7 +236,8 @@ void tcp_select_initial_window(int __space, __u32 mss,
236 /* Set window scaling on max possible window 236 /* Set window scaling on max possible window
237 * See RFC1323 for an explanation of the limit to 14 237 * See RFC1323 for an explanation of the limit to 14
238 */ 238 */
239 space = max_t(u32, sysctl_tcp_rmem[2], sysctl_rmem_max); 239 space = max_t(u32, space, sysctl_tcp_rmem[2]);
240 space = max_t(u32, space, sysctl_rmem_max);
240 space = min_t(u32, space, *window_clamp); 241 space = min_t(u32, space, *window_clamp);
241 while (space > 65535 && (*rcv_wscale) < 14) { 242 while (space > 65535 && (*rcv_wscale) < 14) {
242 space >>= 1; 243 space >>= 1;
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 6287a8b9f428..ab3e796596b1 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -3624,8 +3624,7 @@ restart:
3624 state = ifa->state; 3624 state = ifa->state;
3625 ifa->state = INET6_IFADDR_STATE_DEAD; 3625 ifa->state = INET6_IFADDR_STATE_DEAD;
3626 3626
3627 list_del(&ifa->if_list); 3627 list_move(&ifa->if_list, &del_list);
3628 list_add(&ifa->if_list, &del_list);
3629 } 3628 }
3630 3629
3631 spin_unlock_bh(&ifa->lock); 3630 spin_unlock_bh(&ifa->lock);
diff --git a/net/sctp/output.c b/net/sctp/output.c
index 7425f6c23888..1f1682b9a6a8 100644
--- a/net/sctp/output.c
+++ b/net/sctp/output.c
@@ -610,7 +610,8 @@ int sctp_packet_transmit(struct sctp_packet *packet, gfp_t gfp)
610 /* We will generate more packets, so re-queue 610 /* We will generate more packets, so re-queue
611 * auth chunk. 611 * auth chunk.
612 */ 612 */
613 list_add(&chunk->list, &packet->chunk_list); 613 list_add(&packet->auth->list,
614 &packet->chunk_list);
614 } else { 615 } else {
615 sctp_chunk_free(packet->auth); 616 sctp_chunk_free(packet->auth);
616 packet->auth = NULL; 617 packet->auth = NULL;
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 8812e1bf6c1c..9fc417a8b476 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -2079,7 +2079,7 @@ static int sctp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
2079 lock_sock(sk); 2079 lock_sock(sk);
2080 2080
2081 if (sctp_style(sk, TCP) && !sctp_sstate(sk, ESTABLISHED) && 2081 if (sctp_style(sk, TCP) && !sctp_sstate(sk, ESTABLISHED) &&
2082 !sctp_sstate(sk, CLOSING)) { 2082 !sctp_sstate(sk, CLOSING) && !sctp_sstate(sk, CLOSED)) {
2083 err = -ENOTCONN; 2083 err = -ENOTCONN;
2084 goto out; 2084 goto out;
2085 } 2085 }
diff --git a/net/sctp/ulpqueue.c b/net/sctp/ulpqueue.c
index ec166d2bd2d9..877e55066f89 100644
--- a/net/sctp/ulpqueue.c
+++ b/net/sctp/ulpqueue.c
@@ -204,7 +204,9 @@ int sctp_ulpq_tail_event(struct sctp_ulpq *ulpq, struct sctp_ulpevent *event)
204 /* If the socket is just going to throw this away, do not 204 /* If the socket is just going to throw this away, do not
205 * even try to deliver it. 205 * even try to deliver it.
206 */ 206 */
207 if (sock_flag(sk, SOCK_DEAD) || (sk->sk_shutdown & RCV_SHUTDOWN)) 207 if (sk->sk_shutdown & RCV_SHUTDOWN &&
208 (sk->sk_shutdown & SEND_SHUTDOWN ||
209 !sctp_ulpevent_is_notification(event)))
208 goto out_free; 210 goto out_free;
209 211
210 if (!sctp_ulpevent_is_notification(event)) { 212 if (!sctp_ulpevent_is_notification(event)) {
diff --git a/net/tipc/monitor.c b/net/tipc/monitor.c
index be70a57c1ff9..b62caa1c770c 100644
--- a/net/tipc/monitor.c
+++ b/net/tipc/monitor.c
@@ -794,10 +794,10 @@ int __tipc_nl_add_monitor(struct net *net, struct tipc_nl_msg *msg,
794 return 0; 794 return 0;
795 795
796attr_msg_full: 796attr_msg_full:
797 read_unlock_bh(&mon->lock);
797 nla_nest_cancel(msg->skb, attrs); 798 nla_nest_cancel(msg->skb, attrs);
798msg_full: 799msg_full:
799 genlmsg_cancel(msg->skb, hdr); 800 genlmsg_cancel(msg->skb, hdr);
800 read_unlock_bh(&mon->lock);
801 801
802 return -EMSGSIZE; 802 return -EMSGSIZE;
803} 803}