On Thu, 21 Nov 2013, Johannes Berg wrote: > From: Johannes Berg <johannes.berg@xxxxxxxxx> > > The netdev_for_each_mc_addr() handling can be done with a > semantic patch and a simple macro encapsulating the addr > dereferencing for the two cases. > > In fact, this already fixed a bug in dvb_net.c, although > I think that depends on a newer kernel anyway. > > Thanks Julia for the help with iterator name! > > Cc: Julia Lawall <julia.lawall@xxxxxxx> > Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> Acked-by: Julia Lawall <julia.lawall@xxxxxxx> for the semantic patch. > --- > backport/backport-include/linux/netdevice.h | 3 ++ > .../drivers_net_ethernet_atheros_alx_main.patch | 14 -------- > ...ers_net_ethernet_atheros_atl1c_atl1c_main.patch | 14 -------- > ...ers_net_ethernet_atheros_atl1e_atl1e_main.patch | 14 -------- > .../drivers_net_ethernet_atheros_atlx_atl2.patch | 14 -------- > .../drivers_net_ethernet_atheros_atlx_atlx.patch | 14 -------- > .../drivers_net_ethernet_broadcom_b44.patch | 14 -------- > .../drivers_net_wireless_ath_ath6kl_main.patch | 38 ---------------------- > ...net_wireless_brcm80211_brcmfmac_dhd_linux.patch | 14 -------- > .../drivers_net_wireless_libertas_main.patch | 37 --------------------- > .../drivers_net_wireless_mwifiex_debugfs.patch | 14 -------- > .../drivers_net_wireless_mwifiex_sta_ioctl.patch | 14 -------- > .../drivers_net_wireless_orinoco_hw.patch | 26 --------------- > .../drivers_net_wireless_rndis_wlan.patch | 14 -------- > .../net_bluetooth_bnep_netdev.patch | 16 --------- > .../network/25-multicast.cocci | 11 +++++++ > 16 files changed, 14 insertions(+), 257 deletions(-) > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_alx_main.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1c_atl1c_main.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1e_atl1e_main.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atl2.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atlx.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_broadcom_b44.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath6kl_main.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_brcm80211_brcmfmac_dhd_linux.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_main.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_debugfs.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_sta_ioctl.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rndis_wlan.patch > delete mode 100644 patches/collateral-evolutions/network/25-multicast-list_head/net_bluetooth_bnep_netdev.patch > create mode 100644 patches/collateral-evolutions/network/25-multicast.cocci > > diff --git a/backport/backport-include/linux/netdevice.h b/backport/backport-include/linux/netdevice.h > index 631fc84..f97e9e1 100644 > --- a/backport/backport-include/linux/netdevice.h > +++ b/backport/backport-include/linux/netdevice.h > @@ -255,6 +255,9 @@ static inline int netif_set_real_num_rx_queues(struct net_device *dev, > #define netif_set_real_num_tx_queues LINUX_BACKPORT(netif_set_real_num_tx_queues) > extern int netif_set_real_num_tx_queues(struct net_device *dev, > unsigned int txq); > +#define mc_addr(ha) (ha)->dmi_addr > +#else > +#define mc_addr(ha) (ha)->addr > #endif > > #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34) > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_alx_main.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_alx_main.patch > deleted file mode 100644 > index 886bb87..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_alx_main.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/ethernet/atheros/alx/main.c > -+++ b/drivers/net/ethernet/atheros/alx/main.c > -@@ -466,7 +466,11 @@ static void __alx_set_rx_mode(struct net > - > - if (!(netdev->flags & IFF_ALLMULTI)) { > - netdev_for_each_mc_addr(ha, netdev) > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - alx_add_mc_addr(hw, ha->addr, mc_hash); > -+#else > -+ alx_add_mc_addr(hw, ha->dmi_addr, mc_hash); > -+#endif > - > - alx_write_mem32(hw, ALX_HASH_TBL0, mc_hash[0]); > - alx_write_mem32(hw, ALX_HASH_TBL1, mc_hash[1]); > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1c_atl1c_main.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1c_atl1c_main.patch > deleted file mode 100644 > index 5f18a4a..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1c_atl1c_main.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c > -+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c > -@@ -410,7 +410,11 @@ static void atl1c_set_multi(struct net_d > - > - /* comoute mc addresses' hash value ,and put it into hash table */ > - netdev_for_each_mc_addr(ha, netdev) { > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - hash_value = atl1c_hash_mc_addr(hw, ha->addr); > -+#else > -+ hash_value = atl1c_hash_mc_addr(hw, ha->dmi_addr); > -+#endif > - atl1c_hash_set(hw, hash_value); > - } > - } > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1e_atl1e_main.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1e_atl1e_main.patch > deleted file mode 100644 > index 0da229f..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1e_atl1e_main.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c > -+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c > -@@ -308,7 +308,11 @@ static void atl1e_set_multi(struct net_d > - > - /* comoute mc addresses' hash value ,and put it into hash table */ > - netdev_for_each_mc_addr(ha, netdev) { > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - hash_value = atl1e_hash_mc_addr(hw, ha->addr); > -+#else > -+ hash_value = atl1e_hash_mc_addr(hw, ha->dmi_addr); > -+#endif > - atl1e_hash_set(hw, hash_value); > - } > - } > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atl2.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atl2.patch > deleted file mode 100644 > index 815d3ca..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atl2.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/ethernet/atheros/atlx/atl2.c > -+++ b/drivers/net/ethernet/atheros/atlx/atl2.c > -@@ -159,7 +159,11 @@ static void atl2_set_multi(struct net_de > - > - /* comoute mc addresses' hash value ,and put it into hash table */ > - netdev_for_each_mc_addr(ha, netdev) { > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - hash_value = atl2_hash_mc_addr(hw, ha->addr); > -+#else > -+ hash_value = atl2_hash_mc_addr(hw, ha->dmi_addr); > -+#endif > - atl2_hash_set(hw, hash_value); > - } > - } > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atlx.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atlx.patch > deleted file mode 100644 > index 76e924d..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atlx.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/ethernet/atheros/atlx/atlx.c > -+++ b/drivers/net/ethernet/atheros/atlx/atlx.c > -@@ -149,7 +149,11 @@ static void atlx_set_multi(struct net_de > - > - /* compute mc addresses' hash value ,and put it into hash table */ > - netdev_for_each_mc_addr(ha, netdev) { > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - hash_value = atlx_hash_mc_addr(hw, ha->addr); > -+#else > -+ hash_value = atlx_hash_mc_addr(hw, ha->dmi_addr); > -+#endif > - atlx_hash_set(hw, hash_value); > - } > - } > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_broadcom_b44.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_broadcom_b44.patch > deleted file mode 100644 > index 41a7edb..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_broadcom_b44.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/ethernet/broadcom/b44.c > -+++ b/drivers/net/ethernet/broadcom/b44.c > -@@ -1703,7 +1703,11 @@ static int __b44_load_mcast(struct b44 * > - netdev_for_each_mc_addr(ha, dev) { > - if (i == num_ents) > - break; > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - __b44_cam_write(bp, ha->addr, i++ + 1); > -+#else > -+ __b44_cam_write(bp, ha->dmi_addr, i++ + 1); > -+#endif > - } > - return i+1; > - } > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath6kl_main.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath6kl_main.patch > deleted file mode 100644 > index 75e51fe..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath6kl_main.patch > +++ /dev/null > @@ -1,38 +0,0 @@ > ---- a/drivers/net/wireless/ath/ath6kl/main.c > -+++ b/drivers/net/wireless/ath/ath6kl/main.c > -@@ -1208,7 +1208,11 @@ static void ath6kl_set_multicast_list(st > - list_for_each_entry_safe(mc_filter, tmp, &vif->mc_filter, list) { > - found = false; > - netdev_for_each_mc_addr(ha, ndev) { > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - if (memcmp(ha->addr, mc_filter->hw_addr, > -+#else > -+ if (memcmp(ha->dmi_addr, mc_filter->hw_addr, > -+#endif > - ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE) == 0) { > - found = true; > - break; > -@@ -1242,7 +1246,11 @@ static void ath6kl_set_multicast_list(st > - netdev_for_each_mc_addr(ha, ndev) { > - found = false; > - list_for_each_entry(mc_filter, &vif->mc_filter, list) { > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - if (memcmp(ha->addr, mc_filter->hw_addr, > -+#else > -+ if (memcmp(ha->dmi_addr, mc_filter->hw_addr, > -+#endif > - ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE) == 0) { > - found = true; > - break; > -@@ -1257,7 +1265,11 @@ static void ath6kl_set_multicast_list(st > - goto out; > - } > - > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - memcpy(mc_filter->hw_addr, ha->addr, > -+#else > -+ memcpy(mc_filter->hw_addr, ha->dmi_addr, > -+#endif > - ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE); > - /* Set the multicast filter */ > - ath6kl_dbg(ATH6KL_DBG_TRC, > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_brcm80211_brcmfmac_dhd_linux.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_brcm80211_brcmfmac_dhd_linux.patch > deleted file mode 100644 > index 90a9936..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_brcm80211_brcmfmac_dhd_linux.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c > -+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c > -@@ -116,7 +116,11 @@ static void _brcmf_set_multicast_list(st > - netdev_for_each_mc_addr(ha, ndev) { > - if (!cnt) > - break; > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - memcpy(bufp, ha->addr, ETH_ALEN); > -+#else > -+ memcpy(bufp, ha->dmi_addr, ETH_ALEN); > -+#endif > - bufp += ETH_ALEN; > - cnt--; > - } > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_main.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_main.patch > deleted file mode 100644 > index a7a9bbc..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_main.patch > +++ /dev/null > @@ -1,37 +0,0 @@ > ---- a/drivers/net/wireless/libertas/main.c > -+++ b/drivers/net/wireless/libertas/main.c > -@@ -349,18 +349,34 @@ static int lbs_add_mcast_addrs(struct cm > - netif_addr_lock_bh(dev); > - cnt = netdev_mc_count(dev); > - netdev_for_each_mc_addr(ha, dev) { > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - if (mac_in_list(cmd->maclist, nr_addrs, ha->addr)) { > -+#else > -+ if (mac_in_list(cmd->maclist, nr_addrs, ha->dmi_addr)) { > -+#endif > - lbs_deb_net("mcast address %s:%pM skipped\n", dev->name, > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - ha->addr); > -+#else > -+ ha->dmi_addr); > -+#endif > - cnt--; > - continue; > - } > - > - if (i == MRVDRV_MAX_MULTICAST_LIST_SIZE) > - break; > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - memcpy(&cmd->maclist[6*i], ha->addr, ETH_ALEN); > -+#else > -+ memcpy(&cmd->maclist[6*i], ha->dmi_addr, ETH_ALEN); > -+#endif > - lbs_deb_net("mcast address %s:%pM added to filter\n", dev->name, > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - ha->addr); > -+#else > -+ ha->dmi_addr); > -+#endif > - i++; > - cnt--; > - } > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_debugfs.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_debugfs.patch > deleted file mode 100644 > index 6add185..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_debugfs.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/wireless/mwifiex/debugfs.c > -+++ b/drivers/net/wireless/mwifiex/debugfs.c > -@@ -227,7 +227,11 @@ mwifiex_info_read(struct file *file, cha > - > - netdev_for_each_mc_addr(ha, netdev) > - p += sprintf(p, "multicast_address[%d]=\"%pM\"\n", > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - i++, ha->addr); > -+#else > -+ i++, ha->dmi_addr); > -+#endif > - } > - > - p += sprintf(p, "num_tx_bytes = %lu\n", priv->stats.tx_bytes); > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_sta_ioctl.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_sta_ioctl.patch > deleted file mode 100644 > index a0741df..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_sta_ioctl.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/wireless/mwifiex/sta_ioctl.c > -+++ b/drivers/net/wireless/mwifiex/sta_ioctl.c > -@@ -43,7 +43,11 @@ int mwifiex_copy_mcast_addr(struct mwifi > - struct netdev_hw_addr *ha; > - > - netdev_for_each_mc_addr(ha, dev) > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - memcpy(&mlist->mac_list[i++], ha->addr, ETH_ALEN); > -+#else > -+ memcpy(&mlist->mac_list[i++], ha->dmi_addr, ETH_ALEN); > -+#endif > - > - return i; > - } > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.patch > deleted file mode 100644 > index 9ad33bc..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.patch > +++ /dev/null > @@ -1,26 +0,0 @@ > ---- a/drivers/net/wireless/orinoco/hw.c > -+++ b/drivers/net/wireless/orinoco/hw.c > -@@ -1093,7 +1093,11 @@ int __orinoco_hw_set_multicast_list(stru > - netdev_for_each_mc_addr(ha, dev) { > - if (i == mc_count) > - break; > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - memcpy(mclist.addr[i++], ha->addr, ETH_ALEN); > -+#else > -+ memcpy(mclist.addr[i++], ha->dmi_addr, ETH_ALEN); > -+#endif > - } > - > - err = hw->ops->write_ltv(hw, USER_BAP, > ---- a/drivers/net/wireless/orinoco/hw.h > -+++ b/drivers/net/wireless/orinoco/hw.h > -@@ -22,6 +22,9 @@ > - > - /* Forward declarations */ > - struct orinoco_private; > -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)) > -+struct dev_addr_list; > -+#endif > - > - int determine_fw_capabilities(struct orinoco_private *priv, char *fw_name, > - size_t fw_name_len, u32 *hw_ver); > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rndis_wlan.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rndis_wlan.patch > deleted file mode 100644 > index 31fc596..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rndis_wlan.patch > +++ /dev/null > @@ -1,14 +0,0 @@ > ---- a/drivers/net/wireless/rndis_wlan.c > -+++ b/drivers/net/wireless/rndis_wlan.c > -@@ -1629,7 +1629,11 @@ static void set_multicast_list(struct us > - > - netdev_for_each_mc_addr(ha, usbdev->net) > - memcpy(mc_addrs + i++ * ETH_ALEN, > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - ha->addr, ETH_ALEN); > -+#else > -+ ha->dmi_addr, ETH_ALEN); > -+#endif > - } > - netif_addr_unlock_bh(usbdev->net); > - > diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/net_bluetooth_bnep_netdev.patch b/patches/collateral-evolutions/network/25-multicast-list_head/net_bluetooth_bnep_netdev.patch > deleted file mode 100644 > index 3d44951..0000000 > --- a/patches/collateral-evolutions/network/25-multicast-list_head/net_bluetooth_bnep_netdev.patch > +++ /dev/null > @@ -1,16 +0,0 @@ > ---- a/net/bluetooth/bnep/netdev.c > -+++ b/net/bluetooth/bnep/netdev.c > -@@ -93,8 +93,13 @@ static void bnep_net_set_mc_list(struct > - netdev_for_each_mc_addr(ha, dev) { > - if (i == BNEP_MAX_MULTICAST_FILTERS) > - break; > -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) > - memcpy(__skb_put(skb, ETH_ALEN), ha->addr, ETH_ALEN); > - memcpy(__skb_put(skb, ETH_ALEN), ha->addr, ETH_ALEN); > -+#else > -+ memcpy(__skb_put(skb, ETH_ALEN), ha->dmi_addr, ETH_ALEN); > -+ memcpy(__skb_put(skb, ETH_ALEN), ha->dmi_addr, ETH_ALEN); > -+#endif > - > - i++; > - } > diff --git a/patches/collateral-evolutions/network/25-multicast.cocci b/patches/collateral-evolutions/network/25-multicast.cocci > new file mode 100644 > index 0000000..2d3d495 > --- /dev/null > +++ b/patches/collateral-evolutions/network/25-multicast.cocci > @@ -0,0 +1,11 @@ > +@@ > +identifier ha; > +expression netdev; > +iterator name netdev_for_each_mc_addr; > +@@ > + netdev_for_each_mc_addr(ha, netdev) { > + <... > +-ha->addr > ++mc_addr(ha) > + ...> > + } > -- > 1.8.4.rc3 > > -- To unsubscribe from this list: send the line "unsubscribe backports" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html