<br><font size=2 face="sans-serif">Here is the patch for :</font>
<br>
<br><font size=2 face="sans-serif">1. initialize path->ah = NULL</font>
<br><font size=2 face="sans-serif">2. move neigh->neighbour->ops
before kfree(neigh)</font>
<br><font size=2 face="sans-serif">3. set neighbour->ops->destructor
to NULL while kfree(neigh)</font>
<br>
<div>
<br><font size=2 face="sans-serif">diff -urN infiniband/ulp/ipoib/ipoib_main.c
infiniband-patch/ulp/ipoib/ipoib_main.c<br>
--- infiniband/ulp/ipoib/ipoib_main.c 2005-02-17
17:24:56.000000000 +0000<br>
+++ infiniband-patch/ulp/ipoib/ipoib_main.c 2005-02-18
00:52:22.000000000 +0000<br>
@@ -348,6 +348,7 @@<br>
<br>
path->dev = dev;<br>
path->pathrec.dlid = 0;<br>
+ path->ah = NULL;<br>
<br>
skb_queue_head_init(&path->queue);<br>
<br>
@@ -450,8 +451,8 @@<br>
err:<br>
*to_ipoib_neigh(skb->dst->neighbour)
= NULL;<br>
list_del(&neigh->list);<br>
- kfree(neigh);<br>
neigh->neighbour->ops->destructor
= NULL;<br>
+ kfree(neigh);<br>
<br>
++priv->stats.tx_dropped;<br>
dev_kfree_skb_any(skb);<br>
@@ -673,6 +674,7 @@<br>
ipoib_put_ah(neigh->ah);<br>
list_del(&neigh->list);<br>
*to_ipoib_neigh(n)
= NULL;<br>
+ n->ops->destructor
= NULL;<br>
kfree(neigh);<br>
}<br>
</font>
<br>
<br>
<br><font size=2 face="sans-serif"><br>
Thanks<br>
Shirley Ma<br>
IBM Linux Technology Center<br>
15300 SW Koll Parkway<br>
Beaverton, OR 97006-6063<br>
Phone(Fax): (503) 578-7638<br>
<br>
</font></div>