summaryrefslogtreecommitdiffstats
path: root/crypto/dh.c
diff options
context:
space:
mode:
authorRaju Rangoju <rajur@chelsio.com>2019-02-06 22:54:44 +0530
committerJason Gunthorpe <jgg@mellanox.com>2019-02-08 17:02:05 -0700
commitf368ff188ae4b3ef6f740a15999ea0373261b619 (patch)
tree6f9c412a4066bb10bdc362c4ca8b144947ab55eb /crypto/dh.c
parent11a27e2121a544cae2dde62df9218b3d5d888a02 (diff)
downloadlinux-f368ff188ae4b3ef6f740a15999ea0373261b619.tar.bz2
iw_cxgb4: fix srqidx leak during connection abort
When an application aborts the connection by moving QP from RTS to ERROR, then iw_cxgb4's modify_rc_qp() RTS->ERROR logic sets the *srqidxp to 0 via t4_set_wq_in_error(&qhp->wq, 0), and aborts the connection by calling c4iw_ep_disconnect(). c4iw_ep_disconnect() does the following: 1. sends up a close_complete_upcall(ep, -ECONNRESET) to libcxgb4. 2. sends abort request CPL to hw. But, since the close_complete_upcall() is sent before sending the ABORT_REQ to hw, libcxgb4 would fail to release the srqidx if the connection holds one. Because, the srqidx is passed up to libcxgb4 only after corresponding ABORT_RPL is processed by kernel in abort_rpl(). This patch handle the corner-case by moving the call to close_complete_upcall() from c4iw_ep_disconnect() to abort_rpl(). So that libcxgb4 is notified about the -ECONNRESET only after abort_rpl(), and libcxgb4 can relinquish the srqidx properly. Signed-off-by: Raju Rangoju <rajur@chelsio.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'crypto/dh.c')
0 files changed, 0 insertions, 0 deletions