summaryrefslogtreecommitdiff
path: root/drivers/staging/rdma
diff options
context:
space:
mode:
authorMitko Haralanov <mitko.haralanov@intel.com>2015-12-08 17:10:12 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-12-21 13:57:55 -0800
commit6a5464f2248594bcf92bd05beb341650f9e0f357 (patch)
treef969ee1470b9817b267ddc4afa1890d9032f6584 /drivers/staging/rdma
parentfaa98b862011a1ad92e66633220371fa3b799fc4 (diff)
staging/rdma/hfi1: Detect SDMA transmission error early
It is possible for an SDMA transmission error to happen during the processing of an user SDMA transfer. In that case it is better to detect it early and abort any further attempts to send more packets. Reviewed-by: Ira Weiny <ira.weiny@intel.com> Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/rdma')
-rw-r--r--drivers/staging/rdma/hfi1/user_sdma.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/staging/rdma/hfi1/user_sdma.c b/drivers/staging/rdma/hfi1/user_sdma.c
index d03c810b6206..d3de771a0770 100644
--- a/drivers/staging/rdma/hfi1/user_sdma.c
+++ b/drivers/staging/rdma/hfi1/user_sdma.c
@@ -774,6 +774,12 @@ static int user_sdma_send_pkts(struct user_sdma_request *req, unsigned maxpkts)
pq = req->pq;
+ /* If tx completion has reported an error, we are done. */
+ if (test_bit(SDMA_REQ_HAS_ERROR, &req->flags)) {
+ set_bit(SDMA_REQ_DONE_ERROR, &req->flags);
+ return -EFAULT;
+ }
+
/*
* Check if we might have sent the entire request already
*/