forked from Minki/linux
IPoIB: Fix hang in ipoib_flush_paths()
ipoib_flush_paths() can hang during an SM up/down loop: if path_rec_start() fails (for instance, because there is no sm_ah), the path is still added to the path list by neigh_add_path(). Then, ipoib_flush_paths() will wait for path->done, but it will never complete because the request was not issued at all. Fix this by completing path->done if issuing the query fails. This fixes <https://bugs.openfabrics.org/show_bug.cgi?id=1329>. Signed-off-by: Yossi Etigin <yosefe@voltaire.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
fe25c56190
commit
93a3ab939b
@ -547,6 +547,7 @@ static int path_rec_start(struct net_device *dev,
|
||||
if (path->query_id < 0) {
|
||||
ipoib_warn(priv, "ib_sa_path_rec_get failed: %d\n", path->query_id);
|
||||
path->query = NULL;
|
||||
complete(&path->done);
|
||||
return path->query_id;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user