Since kernel 2.6.31 dev_addr in struct net_device is a pointer and not an array itself. Memcpying or memsetting the MAC address with a sizeof(dev_addr) as length argument does not work properly as now the length of the pointer is taken and not the size of the array.
This patch sets the memcpy and memset lengths in three files to MAX_ADDR_LEN. This define exists in the kernel since the old 2.4 days and didn't change its meaning, so it can be considered as a safe length to use for these memcpy and memset operations. Signed-off-by: Sebastian Smolorz <[email protected]> --- addons/rtcap.c | 2 +- addons/rtnetproxy.c | 2 +- stack/rtmac/rtmac_vnic.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/rtcap.c b/addons/rtcap.c index c4a2ccb..ca58391 100644 --- a/addons/rtcap.c +++ b/addons/rtcap.c @@ -302,7 +302,7 @@ static int tap_dev_open(struct net_device *dev) { memcpy(dev->dev_addr, (*(struct rtnet_device **)netdev_priv(dev))->dev_addr, - sizeof(dev->dev_addr)); + MAX_ADDR_LEN); return 0; } diff --git a/addons/rtnetproxy.c b/addons/rtnetproxy.c index 2358d09..36d662b 100644 --- a/addons/rtnetproxy.c +++ b/addons/rtnetproxy.c @@ -464,7 +464,7 @@ static int __init rtnetproxy_init(struct net_device *dev) ether_setup(dev); dev->tx_queue_len = 0; #ifdef CONFIG_RTNET_ADDON_PROXY_ARP - memcpy(dev->dev_addr, rtnetproxy_rtdev->dev_addr, sizeof(dev->dev_addr)); + memcpy(dev->dev_addr, rtnetproxy_rtdev->dev_addr, MAX_ADDR_LEN); #else dev->flags |= IFF_NOARP; #endif diff --git a/stack/rtmac/rtmac_vnic.c b/stack/rtmac/rtmac_vnic.c index 5358028..9e929c5 100644 --- a/stack/rtmac/rtmac_vnic.c +++ b/stack/rtmac/rtmac_vnic.c @@ -131,7 +131,7 @@ static int rtmac_vnic_copy_mac(struct net_device *dev) { memcpy(dev->dev_addr, (*(struct rtnet_device **)netdev_priv(dev))->dev_addr, - sizeof(dev->dev_addr)); + MAX_ADDR_LEN); return 0; } -- 1.7.2.2 ------------------------------------------------------------------------------ Benefiting from Server Virtualization: Beyond Initial Workload Consolidation -- Increasing the use of server virtualization is a top priority.Virtualization can reduce costs, simplify management, and improve application availability and disaster protection. Learn more about boosting the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev _______________________________________________ RTnet-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rtnet-developers

