From: Shirley Ma Change uses of list_for_each_entry() where the loop variable is freed inside the loop to list_for_each_entry_safe(). Signed-off-by: Shirley Ma Signed-off-by: Roland Dreier Signed-off-by: Andrew Morton --- 25-akpm/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/infiniband/ulp/ipoib/ipoib_multicast.c~ib-ipoib-use-list_for_each_entry_safe-when-required drivers/infiniband/ulp/ipoib/ipoib_multicast.c --- 25/drivers/infiniband/ulp/ipoib/ipoib_multicast.c~ib-ipoib-use-list_for_each_entry_safe-when-required 2005-03-02 21:50:39.000000000 -0800 +++ 25-akpm/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2005-03-02 21:50:39.000000000 -0800 @@ -790,7 +790,7 @@ void ipoib_mcast_dev_flush(struct net_de spin_unlock_irqrestore(&priv->lock, flags); - list_for_each_entry(mcast, &remove_list, list) { + list_for_each_entry_safe(mcast, tmcast, &remove_list, list) { ipoib_mcast_leave(dev, mcast); ipoib_mcast_free(mcast); } @@ -902,7 +902,7 @@ void ipoib_mcast_restart_task(void *dev_ spin_unlock_irqrestore(&priv->lock, flags); /* We have to cancel outside of the spinlock */ - list_for_each_entry(mcast, &remove_list, list) { + list_for_each_entry_safe(mcast, tmcast, &remove_list, list) { ipoib_mcast_leave(mcast->dev, mcast); ipoib_mcast_free(mcast); } _