IPoIB: reinitialize path struct's completion for every query
It's possible that IPoIB will issue multiple SA queries for the same path struct. Therefore the struct's completion needs to be initialized for each query rather than only once when the struct is allocated, or else we might not wait long enough for later queries to finish and free the path struct too soon. Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
bf6d9e23a3
commit
65c7eddaba
|
@ -428,7 +428,6 @@ static struct ipoib_path *path_rec_create(struct net_device *dev,
|
|||
skb_queue_head_init(&path->queue);
|
||||
|
||||
INIT_LIST_HEAD(&path->neigh_list);
|
||||
init_completion(&path->done);
|
||||
|
||||
memcpy(path->pathrec.dgid.raw, gid->raw, sizeof (union ib_gid));
|
||||
path->pathrec.sgid = priv->local_gid;
|
||||
|
@ -446,6 +445,8 @@ static int path_rec_start(struct net_device *dev,
|
|||
ipoib_dbg(priv, "Start path record lookup for " IPOIB_GID_FMT "\n",
|
||||
IPOIB_GID_ARG(path->pathrec.dgid));
|
||||
|
||||
init_completion(&path->done);
|
||||
|
||||
path->query_id =
|
||||
ib_sa_path_rec_get(priv->ca, priv->port,
|
||||
&path->pathrec,
|
||||
|
|
Loading…
Reference in New Issue