> Still need some correction.  If the path did not exist previously (i.e, !path 
> = TRUE,
> and, below, had_path = 0), then need to call path_free or we will have a leak.
> 
True
> Maybe the correct patch is:
>        path = __path_find(dev, phdr->hwaddr + 4);
>         if (!path || !path->valid) {
>                 int had_path = 0;
>                 if (!path)
>                         path = path_rec_create(dev, phdr->hwaddr + 4);
>                 else
>                         had_path = 1;
>                 if (path) {
>                         /* put pseudoheader back on for next time */
>                         skb_push(skb, sizeof *phdr);
>                         __skb_queue_tail(&path->queue, skb);
> 
>                         if (!path->query && path_rec_start(dev, path)) {
>                                 spin_unlock_irqrestore(&priv->lock, flags);
>                               if (!had_path)
>                                       path_free(dev, path);
>                                 return;
>                         } else
>                                 __path_add(dev, path);
>                 } else {
>                         ++dev->stats.tx_dropped;
>                         dev_kfree_skb_any(skb);
>                 }
This one looks good  to me.
Are you going to make a patch and submit it?

I think it would be best if you run the same test on the patched IPoIB before 
submission.
Do you agree?

thanks
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to