summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp/iser/iser_verbs.c
diff options
context:
space:
mode:
authorSteve Wise <swise@opengridcomputing.com>2014-07-31 14:35:43 -0500
committerRoland Dreier <roland@purestorage.com>2014-08-01 14:54:37 -0700
commit678ea9b5baab6800692b249bdba77c3c07261d61 (patch)
treea08991d5dcca6940c7b18cc4a600277fc4e60a13 /drivers/infiniband/ulp/iser/iser_verbs.c
parent64aa90f26c06e1cb2aacfb98a7d0eccfbd6c1a91 (diff)
downloadblackbird-op-linux-678ea9b5baab6800692b249bdba77c3c07261d61.tar.gz
blackbird-op-linux-678ea9b5baab6800692b249bdba77c3c07261d61.zip
RDMA/cxgb4: Only call CQ completion handler if it is armed
The function __flush_qp() always calls the ULP's CQ completion handler functions even if the CQ was not armed. This can crash the system if the function pointer is NULL. The iSER ULP behaves this way: no completion handler and never arm the CQ for notification. So now we track whether the CQ is armed at flush time and only call the completion handlers if their CQs were armed. Also, if the RCQ and SCQ are the same CQ, the completion handler is getting called twice. It should only be called once after all SQ and RQ WRs are flushed from the QP. So rearrange the logic to fix this. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/ulp/iser/iser_verbs.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud