diff options
Diffstat (limited to 'drivers/net/usb/dm9601.c')
-rw-r--r-- | drivers/net/usb/dm9601.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c index 5dfed9297b22..02b622e3b9fb 100644 --- a/drivers/net/usb/dm9601.c +++ b/drivers/net/usb/dm9601.c | |||
@@ -93,10 +93,9 @@ static int dm_write(struct usbnet *dev, u8 reg, u16 length, void *data) | |||
93 | netdev_dbg(dev->net, "dm_write() reg=0x%02x, length=%d\n", reg, length); | 93 | netdev_dbg(dev->net, "dm_write() reg=0x%02x, length=%d\n", reg, length); |
94 | 94 | ||
95 | if (data) { | 95 | if (data) { |
96 | buf = kmalloc(length, GFP_KERNEL); | 96 | buf = kmemdup(data, length, GFP_KERNEL); |
97 | if (!buf) | 97 | if (!buf) |
98 | goto out; | 98 | goto out; |
99 | memcpy(buf, data, length); | ||
100 | } | 99 | } |
101 | 100 | ||
102 | err = usb_control_msg(dev->udev, | 101 | err = usb_control_msg(dev->udev, |
@@ -387,10 +386,10 @@ static void dm9601_set_multicast(struct net_device *net) | |||
387 | netdev_mc_count(net) > DM_MAX_MCAST) { | 386 | netdev_mc_count(net) > DM_MAX_MCAST) { |
388 | rx_ctl |= 0x04; | 387 | rx_ctl |= 0x04; |
389 | } else if (!netdev_mc_empty(net)) { | 388 | } else if (!netdev_mc_empty(net)) { |
390 | struct dev_mc_list *mc_list; | 389 | struct netdev_hw_addr *ha; |
391 | 390 | ||
392 | netdev_for_each_mc_addr(mc_list, net) { | 391 | netdev_for_each_mc_addr(ha, net) { |
393 | u32 crc = ether_crc(ETH_ALEN, mc_list->dmi_addr) >> 26; | 392 | u32 crc = ether_crc(ETH_ALEN, ha->addr) >> 26; |
394 | hashes[crc >> 3] |= 1 << (crc & 0x7); | 393 | hashes[crc >> 3] |= 1 << (crc & 0x7); |
395 | } | 394 | } |
396 | } | 395 | } |