summaryrefslogtreecommitdiffstats
path: root/drivers/media/pci
diff options
context:
space:
mode:
authorRaju Rangoju <rajur@chelsio.com>2019-02-06 18:24:44 +0100
committerJason Gunthorpe <jgg@mellanox.com>2019-02-09 01:02:05 +0100
commitf368ff188ae4b3ef6f740a15999ea0373261b619 (patch)
tree6f9c412a4066bb10bdc362c4ca8b144947ab55eb /drivers/media/pci
parentiw_cxgb4: complete the cached SRQ buffers (diff)
downloadlinux-f368ff188ae4b3ef6f740a15999ea0373261b619.tar.xz
linux-f368ff188ae4b3ef6f740a15999ea0373261b619.zip
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 'drivers/media/pci')
0 files changed, 0 insertions, 0 deletions