From: Sagi Grimberg Date: Sun, 7 Dec 2014 14:09:53 +0000 (+0200) Subject: IB/iser: Fix catastrophic error flow hang X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=16df2a26fb3efb52f066098cdbd0f81c8378d861;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git IB/iser: Fix catastrophic error flow hang In case of the HCA going into catasrophic error flow, the beacon post_send is likely to fail, so surely there will be no completion for it. In this case, use a best effort approach and don't wait for beacon completion if we failed to post the send. Reported-by: Alex Tabachnik Signed-off-by: Sagi Grimberg Signed-off-by: Or Gerlitz Signed-off-by: Roland Dreier --- diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c index 08e51e79a054..cd4acc5d94f1 100644 --- a/drivers/infiniband/ulp/iser/iser_verbs.c +++ b/drivers/infiniband/ulp/iser/iser_verbs.c @@ -681,8 +681,10 @@ int iser_conn_terminate(struct iser_conn *iser_conn) /* post an indication that all flush errors were consumed */ err = ib_post_send(ib_conn->qp, &ib_conn->beacon, &bad_wr); - if (err) + if (err) { iser_err("conn %p failed to post beacon", ib_conn); + return 1; + } wait_for_completion(&ib_conn->flush_comp); }