[openib-general] [PATCH]deadlock problem in ipoib

Roland Dreier roland at topspin.com
Thu Feb 24 13:00:36 PST 2005


Thanks, applied except for the chunk below, since I didn't see any
reason to reorder things like this.  It doesn't move the freeing out
of a locked region or fix anything as far as I can tell.

 >	@@ -220,18 +220,23 @@ static void __path_free(struct net_devic
 >	        struct ipoib_dev_priv *priv = netdev_priv(dev);
 >	        struct ipoib_neigh *neigh, *tn;
 >	        struct sk_buff *skb;
 >	+       LIST_HEAD(ah_list);
 >	+       struct ipoib_ah *ah, *tah;
 >	 
 >	        while ((skb = __skb_dequeue(&path->queue)))
 >	                dev_kfree_skb_irq(skb);
 >	 
 >	        list_for_each_entry_safe(neigh, tn, &path->neigh_list, list) {
 >	                if (neigh->ah)
 >	-                       ipoib_put_ah(neigh->ah);
 >	+                       list_add_tail(&neigh->ah->list, &ah_list);
 >	                *to_ipoib_neigh(neigh->neighbour) = NULL;
 >	                neigh->neighbour->ops->destructor = NULL;
 >	                kfree(neigh);
 >	        }
 >	 
 >	+       list_for_each_entry_safe(ah, tah, &ah_list, list)
 >	+               ipoib_put_ah(ah);
 >	+
 >	        if (path->ah)
 >	                ipoib_put_ah(path->ah);



More information about the general mailing list