Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d2924af authored by Petr Štetiar's avatar Petr Štetiar Committed by David S. Miller
Browse files

net: ethernet: fix similar warning reported by kbuild test robot



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: a51645f7 ("net: ethernet: support of_get_mac_address new ERR_PTR error")
Reported-by: default avatarkbuild test robot <lkp@intel.com>
Signed-off-by: default avatarPetr Štetiar <ynezz@true.cz>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1be91314
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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)) {
+1 −1
Original line number Diff line number Diff line
@@ -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);

+1 −1
Original line number Diff line number Diff line
@@ -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);

+1 −1
Original line number Diff line number Diff line
@@ -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;
}
+1 −1
Original line number Diff line number Diff line
@@ -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;

Loading