[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