Loading drivers/net/e1000e/netdev.c +6 −11 Original line number Diff line number Diff line Loading @@ -2589,21 +2589,16 @@ static void e1000_set_multi(struct net_device *netdev) ew32(RCTL, rctl); if (netdev->mc_count) { mta_list = kmalloc(netdev->mc_count * 6, GFP_ATOMIC); if (!netdev_mc_empty(netdev)) { mta_list = kmalloc(netdev_mc_count(netdev) * 6, GFP_ATOMIC); if (!mta_list) return; /* prepare a packed array of only addresses. */ mc_ptr = netdev->mc_list; for (i = 0; i < netdev->mc_count; i++) { if (!mc_ptr) break; memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN); mc_ptr = mc_ptr->next; } i = 0; netdev_for_each_mc_addr(mc_ptr, netdev) memcpy(mta_list + (i++ * ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN); e1000_update_mc_addr_list(hw, mta_list, i); kfree(mta_list); Loading Loading
drivers/net/e1000e/netdev.c +6 −11 Original line number Diff line number Diff line Loading @@ -2589,21 +2589,16 @@ static void e1000_set_multi(struct net_device *netdev) ew32(RCTL, rctl); if (netdev->mc_count) { mta_list = kmalloc(netdev->mc_count * 6, GFP_ATOMIC); if (!netdev_mc_empty(netdev)) { mta_list = kmalloc(netdev_mc_count(netdev) * 6, GFP_ATOMIC); if (!mta_list) return; /* prepare a packed array of only addresses. */ mc_ptr = netdev->mc_list; for (i = 0; i < netdev->mc_count; i++) { if (!mc_ptr) break; memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN); mc_ptr = mc_ptr->next; } i = 0; netdev_for_each_mc_addr(mc_ptr, netdev) memcpy(mta_list + (i++ * ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN); e1000_update_mc_addr_list(hw, mta_list, i); kfree(mta_list); Loading