IPoIB: Make sure path is fully initialized before using it
authorMichael S. Tsirkin <mst@mellanox.co.il>
Tue, 17 Jan 2006 17:22:05 +0000 (09:22 -0800)
committerRoland Dreier <rolandd@cisco.com>
Tue, 17 Jan 2006 17:22:05 +0000 (09:22 -0800)
The SA path record query completion can initialize path->pathrec.dlid
before IPoIB's callback runs and initializes path->ah, so we must test
ah rather than dlid.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/ulp/ipoib/ipoib_main.c

index fd3f5c862a5d92aef6b61202768bf9c29b24ccbe..c3b5f79d11681e2bd43cacad1bbdb73da88203a3 100644 (file)
@@ -505,7 +505,7 @@ static void neigh_add_path(struct sk_buff *skb, struct net_device *dev)
 
        list_add_tail(&neigh->list, &path->neigh_list);
 
-       if (path->pathrec.dlid) {
+       if (path->ah) {
                kref_get(&path->ah->ref);
                neigh->ah = path->ah;
 
@@ -591,7 +591,7 @@ static void unicast_arp_send(struct sk_buff *skb, struct net_device *dev,
                return;
        }
 
-       if (path->pathrec.dlid) {
+       if (path->ah) {
                ipoib_dbg(priv, "Send unicast ARP to %04x\n",
                          be16_to_cpu(path->pathrec.dlid));