re: net: pxa168_eth: set the mac address on the Ethernet controller

Dan Carpenter
2014-10-01T16:54:02Z

Hello Antoine Ténart,

The patch 39830689ef0a: "net: pxa168_eth: set the mac address on the
Ethernet controller" from Sep 30, 2014, leads to the following static
checker warning:

drivers/net/ethernet/marvell/pxa168_eth.c:640 pxa168_eth_set_mac_address()
warn: using signed char for bitops

drivers/net/ethernet/marvell/pxa168_eth.c
625 static int pxa168_eth_set_mac_address(struct net_device *dev, void *addr)
626 {
627 struct sockaddr *sa = addr;
628 struct pxa168_eth_private *pep = netdev_priv(dev);
629 unsigned char oldMac[ETH_ALEN];
630 u32 mac_h, mac_l;
631
632 if (!is_valid_ether_addr(sa->sa_data))
633 return -EADDRNOTAVAIL;
634 memcpy(oldMac, dev->dev_addr, ETH_ALEN);
635 memcpy(dev->dev_addr, sa->sa_data, ETH_ALEN);
636
637 mac_h = sa->sa_data[0] << 24;
638 mac_h |= sa->sa_data[1] << 16;
639 mac_h |= sa->sa_data[2] << 8;
640 mac_h |= sa->sa_data[3];

You may end up with weird signedness bugs doing this (depending of if
the highest bit is ever used).

641 mac_l = sa->sa_data[4] << 8;
642 mac_l |= sa->sa_data[5];
643 wrl(pep, MAC_ADDR_HIGH, mac_h);
644 wrl(pep, MAC_ADDR_LOW, mac_l);
645
646 netif_addr_lock_bh(dev);
647 update_hash_table_mac_address(pep, oldMac, dev->dev_addr);
648 netif_addr_unlock_bh(dev);
649 return 0;
650 }

regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html