summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@mellanox.co.il>2006-01-17 09:22:05 -0800
committerRoland Dreier <rolandd@cisco.com>2006-01-17 09:22:05 -0800
commit47f7a0714b67b904a3a36e2f2d85904e8064219b (patch)
tree8ddea2cb121a8a5f5b0802d1fbb81a7d3d61cd08
parent2664b25051f7ab96b22b199aa2f5ef6a949a4296 (diff)
downloadlinux-stable-47f7a0714b67b904a3a36e2f2d85904e8064219b.tar.gz
linux-stable-47f7a0714b67b904a3a36e2f2d85904e8064219b.tar.bz2
linux-stable-47f7a0714b67b904a3a36e2f2d85904e8064219b.zip
IPoIB: Make sure path is fully initialized before using it
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>
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index fd3f5c862a5d..c3b5f79d1168 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -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));