Now you may call ipoib_put_ah(neigh->ah) for a CM neighbor and this could cause de-reference of a NULL pointer.
On Tue, 2008-01-29 at 12:44 +0200, Moni Shoua wrote: > move a little up the code that checks for a situation where the remote GID > stored in the ipoib_neigh is > different than the one present in the neighbour (handle Gratuitous ARP) > or that a bonding fail over has > happened but the neighbour still has a pointer to an ipoib_neigh created > not by the current slave. This > will cause the driver to apply the check also for connected mode > neighbours. > This patch was tested against upstream kernel and ofed_kernel. > > Signed-off-by: Or Gerlitz <[EMAIL PROTECTED]> > Signed-off-by: Moni Shoua <[EMAIL PROTECTED]> > > diff --git a/kernel_patches/fixes/ipoib_0120_check_grat_arp_with_cm.patch > b/kernel_patches/fixes/ipoib_0120_check_grat_arp_with_cm.patch > new file mode 100644 > index 0000000..8b2c32e > --- /dev/null > +++ b/kernel_patches/fixes/ipoib_0120_check_grat_arp_with_cm.patch > @@ -0,0 +1,34 @@ > +Index: ofa_kernel-1.3/drivers/infiniband/ulp/ipoib/ipoib_main.c > +=================================================================== > +--- ofa_kernel-1.3.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c > 2008-01-29 08:55:33.000000000 -0500 > ++++ ofa_kernel-1.3/drivers/infiniband/ulp/ipoib/ipoib_main.c 2008-01-29 > 09:17:30.000000000 -0500 > +@@ -716,12 +716,7 @@ > + > + neigh = *to_ipoib_neigh(skb->dst->neighbour); > + > +- if (ipoib_cm_get(neigh)) { > +- if (ipoib_cm_up(neigh)) { > +- ipoib_cm_send(dev, skb, ipoib_cm_get(neigh)); > +- goto out; > +- } > +- } else if (neigh->ah) { > ++ if (neigh->ah) > + if (unlikely((memcmp(&neigh->dgid.raw, > + skb->dst->neighbour->ha + 4, > + sizeof(union ib_gid))) || > +@@ -742,9 +737,14 @@ > + goto out; > + } > + > ++ if (ipoib_cm_get(neigh)) { > ++ if (ipoib_cm_up(neigh)) { > ++ ipoib_cm_send(dev, skb, ipoib_cm_get(neigh)); > ++ goto out; > ++ } > ++ } else if (neigh->ah) { > + ipoib_send(dev, skb, neigh->ah, > + IPOIB_QPN(skb->dst->neighbour->ha)); > +- > + goto out; > + } > + > > _______________________________________________ > 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 _______________________________________________ ewg mailing list ewg@lists.openfabrics.org http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg