net: ethernet: fix similar warning reported by kbuild test robot
authorPetr Štetiar <ynezz@true.cz>
Fri, 10 May 2019 09:35:17 +0000 (11:35 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 10 May 2019 22:14:29 +0000 (15:14 -0700)
This patch fixes following (similar) warning reported by kbuild test robot:

 In function ‘memcpy’,
  inlined from ‘smsc75xx_init_mac_address’ at drivers/net/usb/smsc75xx.c:778:3,
  inlined from ‘smsc75xx_bind’ at drivers/net/usb/smsc75xx.c:1501:2:
  ./include/linux/string.h:355:9: warning: argument 2 null where non-null expected [-Wnonnull]
  return __builtin_memcpy(p, q, size);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  drivers/net/usb/smsc75xx.c: In function ‘smsc75xx_bind’:
  ./include/linux/string.h:355:9: note: in a call to built-in function ‘__builtin_memcpy’

I've replaced the offending memcpy with ether_addr_copy, because I'm
100% sure, that of_get_mac_address can't return NULL as it returns valid
pointer or ERR_PTR encoded value, nothing else.

I'm hesitant to just change IS_ERR into IS_ERR_OR_NULL check, as this
would make the warning disappear also, but it would be confusing to
check for impossible return value just to make a compiler happy.

I'm now changing all occurencies of memcpy to ether_addr_copy after the
of_get_mac_address call, as it's very likely, that we're going to get
similar reports from kbuild test robot in the future.

Fixes: a51645f70f63 ("net: ethernet: support of_get_mac_address new ERR_PTR error")
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
19 files changed:
drivers/net/ethernet/allwinner/sun4i-emac.c
drivers/net/ethernet/arc/emac_main.c
drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
drivers/net/ethernet/davicom/dm9000.c
drivers/net/ethernet/freescale/fec_mpc52xx.c
drivers/net/ethernet/freescale/fman/mac.c
drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
drivers/net/ethernet/freescale/gianfar.c
drivers/net/ethernet/freescale/ucc_geth.c
drivers/net/ethernet/marvell/mv643xx_eth.c
drivers/net/ethernet/marvell/mvneta.c
drivers/net/ethernet/marvell/sky2.c
drivers/net/ethernet/micrel/ks8851.c
drivers/net/ethernet/micrel/ks8851_mll.c
drivers/net/ethernet/nxp/lpc_eth.c
drivers/net/ethernet/renesas/sh_eth.c
drivers/net/ethernet/ti/cpsw.c
drivers/net/ethernet/xilinx/ll_temac_main.c
drivers/net/ethernet/xilinx/xilinx_emaclite.c

index 37ebd890ef519a9fdee51bf9cc5f8d0946d9e2e5..9e06dff619c333299eda915622f7c51179ed46ca 100644 (file)
@@ -871,7 +871,7 @@ static int emac_probe(struct platform_device *pdev)
        /* Read MAC-address from DT */
        mac_addr = of_get_mac_address(np);
        if (!IS_ERR(mac_addr))
-               memcpy(ndev->dev_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(ndev->dev_addr, mac_addr);
 
        /* Check if the MAC address is valid, if not get a random one */
        if (!is_valid_ether_addr(ndev->dev_addr)) {
index 7f89ad5c336d66d9676dac2f571ed02199ecd2df..13a1d99b29c6242796736202681f6611e652ffef 100644 (file)
@@ -961,7 +961,7 @@ int arc_emac_probe(struct net_device *ndev, int interface)
        mac_addr = of_get_mac_address(dev->of_node);
 
        if (!IS_ERR(mac_addr))
-               memcpy(ndev->dev_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(ndev->dev_addr, mac_addr);
        else
                eth_hw_addr_random(ndev);
 
index 15b1130aa4aee45602c3185d6e0c9df1610b1284..0e5de88fd6e8522ac0e35e9940d1d083f170c3ea 100644 (file)
@@ -1504,7 +1504,7 @@ static int octeon_mgmt_probe(struct platform_device *pdev)
        mac = of_get_mac_address(pdev->dev.of_node);
 
        if (!IS_ERR(mac))
-               memcpy(netdev->dev_addr, mac, ETH_ALEN);
+               ether_addr_copy(netdev->dev_addr, mac);
        else
                eth_hw_addr_random(netdev);
 
index 953ee5616801113de773a3f6fc60a4773b92e133..5e1aff9a5fd6236026544852288e9cd70698f1dd 100644 (file)
@@ -1413,7 +1413,7 @@ static struct dm9000_plat_data *dm9000_parse_dt(struct device *dev)
 
        mac_addr = of_get_mac_address(np);
        if (!IS_ERR(mac_addr))
-               memcpy(pdata->dev_addr, mac_addr, sizeof(pdata->dev_addr));
+               ether_addr_copy(pdata->dev_addr, mac_addr);
 
        return pdata;
 }
index 7b7e526869a7f8c04b262e3408581df99fc709fe..30cdb246d0201cad12b2acbd99aef8681cefca64 100644 (file)
@@ -903,7 +903,7 @@ static int mpc52xx_fec_probe(struct platform_device *op)
         */
        mac_addr = of_get_mac_address(np);
        if (!IS_ERR(mac_addr)) {
-               memcpy(ndev->dev_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(ndev->dev_addr, mac_addr);
        } else {
                struct mpc52xx_fec __iomem *fec = priv->fec;
 
index 9cd2c28d17df93390d6b57481d14eb56da6cc3db..7ab8095db1928a68a36810161d644b0b0b60c260 100644 (file)
@@ -729,7 +729,7 @@ static int mac_probe(struct platform_device *_of_dev)
                err = -EINVAL;
                goto _return_of_get_parent;
        }
-       memcpy(mac_dev->addr, mac_addr, sizeof(mac_dev->addr));
+       ether_addr_copy(mac_dev->addr, mac_addr);
 
        /* Get the port handles */
        nph = of_count_phandle_with_args(mac_node, "fsl,fman-ports", NULL);
index 90ea7a115d0fb9a140d012551959bd943084873c..5fad73b2e12386763f3ef9797b00131956a5847f 100644 (file)
@@ -1015,7 +1015,7 @@ static int fs_enet_probe(struct platform_device *ofdev)
 
        mac_addr = of_get_mac_address(ofdev->dev.of_node);
        if (!IS_ERR(mac_addr))
-               memcpy(ndev->dev_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(ndev->dev_addr, mac_addr);
 
        ret = fep->ops->allocate_bd(ndev);
        if (ret)
index df13c693b03850b23c357b98997c3f29fff289cb..e670cd293dbab9db54daf51037ac13ea58c8d8c2 100644 (file)
@@ -873,7 +873,7 @@ static int gfar_of_init(struct platform_device *ofdev, struct net_device **pdev)
        mac_addr = of_get_mac_address(np);
 
        if (!IS_ERR(mac_addr))
-               memcpy(dev->dev_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(dev->dev_addr, mac_addr);
 
        if (model && !strcasecmp(model, "TSEC"))
                priv->device_flags |= FSL_GIANFAR_DEV_HAS_GIGABIT |
index 216e99af2b5a1dc26d336240a76985a7d56c4c8c..4d6892d2f0a4bde9d09d61e7666a86ba1b71f78d 100644 (file)
@@ -3911,7 +3911,7 @@ static int ucc_geth_probe(struct platform_device* ofdev)
 
        mac_addr = of_get_mac_address(np);
        if (!IS_ERR(mac_addr))
-               memcpy(dev->dev_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(dev->dev_addr, mac_addr);
 
        ugeth->ug_info = ug_info;
        ugeth->dev = device;
index 07e254fc96effec9428f5247ebcaf6b222476d3f..409b69fd43742a590135195cb79ce072fc3517c3 100644 (file)
@@ -2750,7 +2750,7 @@ static int mv643xx_eth_shared_of_add_port(struct platform_device *pdev,
 
        mac_addr = of_get_mac_address(pnp);
        if (!IS_ERR(mac_addr))
-               memcpy(ppd.mac_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(ppd.mac_addr, mac_addr);
 
        mv643xx_eth_property(pnp, "tx-queue-size", ppd.tx_queue_size);
        mv643xx_eth_property(pnp, "tx-sram-addr", ppd.tx_sram_addr);
index 8186135883ed965f62ec76586649c3eafb63786f..e758650b2c26e29fc7f5df3ae4e49e7111ec39ed 100644 (file)
@@ -4565,7 +4565,7 @@ static int mvneta_probe(struct platform_device *pdev)
        dt_mac_addr = of_get_mac_address(dn);
        if (!IS_ERR(dt_mac_addr)) {
                mac_from = "device tree";
-               memcpy(dev->dev_addr, dt_mac_addr, ETH_ALEN);
+               ether_addr_copy(dev->dev_addr, dt_mac_addr);
        } else {
                mvneta_get_mac_addr(pp, hw_mac_addr);
                if (is_valid_ether_addr(hw_mac_addr)) {
index 9d070cca3e9eb000925802b4ed6ff0cc95879d55..5adf307fbbfd3656c1664d95fa645b2864517e5e 100644 (file)
@@ -4805,7 +4805,7 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port,
         */
        iap = of_get_mac_address(hw->pdev->dev.of_node);
        if (!IS_ERR(iap))
-               memcpy(dev->dev_addr, iap, ETH_ALEN);
+               ether_addr_copy(dev->dev_addr, iap);
        else
                memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8,
                              ETH_ALEN);
index b44172a901edbeb5e899c8c9642cd1c84fbca1e3..ba4fdf1b0dea4f114bc0f882c8a1e03cb6a87f85 100644 (file)
@@ -426,7 +426,7 @@ static void ks8851_init_mac(struct ks8851_net *ks)
 
        mac_addr = of_get_mac_address(ks->spidev->dev.of_node);
        if (!IS_ERR(mac_addr)) {
-               memcpy(dev->dev_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(dev->dev_addr, mac_addr);
                ks8851_write_mac_addr(dev);
                return;
        }
index dc76b0d152348bfb6b95abad8ef2f36e11d64c35..e5c8412c08c1da3633f687f6ecd716d3ea057591 100644 (file)
@@ -1328,7 +1328,7 @@ static int ks8851_probe(struct platform_device *pdev)
        if (pdev->dev.of_node) {
                mac = of_get_mac_address(pdev->dev.of_node);
                if (!IS_ERR(mac))
-                       memcpy(ks->mac_addr, mac, ETH_ALEN);
+                       ether_addr_copy(ks->mac_addr, mac);
        } else {
                struct ks8851_mll_platform_data *pdata;
 
index da138edddd3256905741ff146db7967429ec3ab1..fec604c4c0d3b06c81a76ccdc6591f2a3dada6b6 100644 (file)
@@ -1369,7 +1369,7 @@ static int lpc_eth_drv_probe(struct platform_device *pdev)
        if (!is_valid_ether_addr(ndev->dev_addr)) {
                const char *macaddr = of_get_mac_address(np);
                if (!IS_ERR(macaddr))
-                       memcpy(ndev->dev_addr, macaddr, ETH_ALEN);
+                       ether_addr_copy(ndev->dev_addr, macaddr);
        }
        if (!is_valid_ether_addr(ndev->dev_addr))
                eth_hw_addr_random(ndev);
index 7c4e282242d56cbd9f92c6b0b3289b1cffc8fae2..6354f19a31ebe579068226323734236bac6e465b 100644 (file)
@@ -3193,7 +3193,7 @@ static struct sh_eth_plat_data *sh_eth_parse_dt(struct device *dev)
 
        mac_addr = of_get_mac_address(np);
        if (!IS_ERR(mac_addr))
-               memcpy(pdata->mac_addr, mac_addr, ETH_ALEN);
+               ether_addr_copy(pdata->mac_addr, mac_addr);
 
        pdata->no_ether_link =
                of_property_read_bool(np, "renesas,no-ether-link");
index b18eeb05b9930feb23d563767b2ef272891406ea..634fc484a0b373bf870352224f61f20c2241b272 100644 (file)
@@ -2233,7 +2233,7 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data,
 no_phy_slave:
                mac_addr = of_get_mac_address(slave_node);
                if (!IS_ERR(mac_addr)) {
-                       memcpy(slave_data->mac_addr, mac_addr, ETH_ALEN);
+                       ether_addr_copy(slave_data->mac_addr, mac_addr);
                } else {
                        ret = ti_cm_get_macid(&pdev->dev, i,
                                              slave_data->mac_addr);
index 997475c209c0da05d762b900a916b4ffdafad830..47c45152132ee2bc4519f24de9971da36b1dd263 100644 (file)
@@ -361,7 +361,7 @@ static void temac_do_set_mac_address(struct net_device *ndev)
 
 static int temac_init_mac_address(struct net_device *ndev, const void *address)
 {
-       memcpy(ndev->dev_addr, address, ETH_ALEN);
+       ether_addr_copy(ndev->dev_addr, address);
        if (!is_valid_ether_addr(ndev->dev_addr))
                eth_hw_addr_random(ndev);
        temac_do_set_mac_address(ndev);
index 69117075356327aa9904dc26f2ab8064dd9dd3fb..6886270da695925b0c5155ef8bdd66221d927e7f 100644 (file)
@@ -1167,7 +1167,7 @@ static int xemaclite_of_probe(struct platform_device *ofdev)
 
        if (!IS_ERR(mac_address)) {
                /* Set the MAC address. */
-               memcpy(ndev->dev_addr, mac_address, ETH_ALEN);
+               ether_addr_copy(ndev->dev_addr, mac_address);
        } else {
                dev_warn(dev, "No MAC address found, using random\n");
                eth_hw_addr_random(ndev);