i40iw: Replace list_for_each_entry macro with safe version
authorMustafa Ismail <mustafa.ismail@intel.com>
Wed, 30 Nov 2016 21:08:34 +0000 (15:08 -0600)
committerDoug Ledford <dledford@redhat.com>
Mon, 5 Dec 2016 21:09:41 +0000 (16:09 -0500)
Use list_for_each_entry_safe macro for the IPv6 addr list
as IPv6 addresses can be deleted while going through the
list.

Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com>
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/i40iw/i40iw_cm.c
drivers/infiniband/hw/i40iw/i40iw_main.c

index 93ae764fc44e1ef0af55cee790a81fb1cb571347..9a14880fe85a4dba32d1a2260f103946a1c83376 100644 (file)
@@ -1644,7 +1644,7 @@ static enum i40iw_status_code i40iw_add_mqh_6(struct i40iw_device *iwdev,
 {
        struct net_device *ip_dev;
        struct inet6_dev *idev;
-       struct inet6_ifaddr *ifp;
+       struct inet6_ifaddr *ifp, *tmp;
        enum i40iw_status_code ret = 0;
        struct i40iw_cm_listener *child_listen_node;
        unsigned long flags;
@@ -1659,7 +1659,7 @@ static enum i40iw_status_code i40iw_add_mqh_6(struct i40iw_device *iwdev,
                                i40iw_pr_err("idev == NULL\n");
                                break;
                        }
-                       list_for_each_entry(ifp, &idev->addr_list, if_list) {
+                       list_for_each_entry_safe(ifp, tmp, &idev->addr_list, if_list) {
                                i40iw_debug(&iwdev->sc_dev,
                                            I40IW_DEBUG_CM,
                                            "IP=%pI6, vlan_id=%d, MAC=%pM\n",
index d86bb6e98f0781e2711e6f8c92ecf18904b5d520..4ce05b8e8f0a81b73874cf815f3651c5999b3e38 100644 (file)
@@ -1164,7 +1164,7 @@ static void i40iw_add_ipv6_addr(struct i40iw_device *iwdev)
 {
        struct net_device *ip_dev;
        struct inet6_dev *idev;
-       struct inet6_ifaddr *ifp;
+       struct inet6_ifaddr *ifp, *tmp;
        u32 local_ipaddr6[4];
 
        rcu_read_lock();
@@ -1177,7 +1177,7 @@ static void i40iw_add_ipv6_addr(struct i40iw_device *iwdev)
                                i40iw_pr_err("ipv6 inet device not found\n");
                                break;
                        }
-                       list_for_each_entry(ifp, &idev->addr_list, if_list) {
+                       list_for_each_entry_safe(ifp, tmp, &idev->addr_list, if_list) {
                                i40iw_pr_info("IP=%pI6, vlan_id=%d, MAC=%pM\n", &ifp->addr,
                                              rdma_vlan_dev_vlan_id(ip_dev), ip_dev->dev_addr);
                                i40iw_copy_ip_ntohl(local_ipaddr6,