summaryrefslogtreecommitdiff
path: root/drivers/isdn/Kconfig
diff options
context:
space:
mode:
authorSteve Wise <swise@opengridcomputing.com>2014-04-24 14:31:53 -0500
committerRoland Dreier <roland@purestorage.com>2014-04-28 17:29:41 -0700
commitcc18b939e1efbc2a47f62dbd2b1df53d974df6b7 (patch)
treec97432448b7adcc54addb74c3ed98d0989ffc07b /drivers/isdn/Kconfig
parentd1db0eea852497762cab43b905b879dfcd3b8987 (diff)
RDMA/cxgb4: Fix endpoint mutex deadlocks
In cases where the cm calls c4iw_modify_rc_qp() with the endpoint mutex held, they must be called with internal == 1. rx_data() and process_mpa_reply() are not doing this. This causes a deadlock because c4iw_modify_rc_qp() might call c4iw_ep_disconnect() in some !internal cases, and c4iw_ep_disconnect() acquires the endpoint mutex. The design was intended to only do the disconnect for !internal calls. Change rx_data(), FPDU_MODE case, to call c4iw_modify_rc_qp() with internal == 1, and then disconnect only after releasing the mutex. Change process_mpa_reply() to call c4iw_modify_rc_qp(TERMINATE) with internal == 1 and set a new attr flag telling it to send a TERMINATE message. Previously this was implied by !internal. Change process_mpa_reply() to return whether the caller should disconnect after releasing the endpoint mutex. Now rx_data() will do the disconnect in the cases where process_mpa_reply() wants to disconnect after the TERMINATE is sent. Change c4iw_modify_rc_qp() RTS->TERM to only disconnect if !internal, and to send a TERMINATE message if attrs->send_term is 1. Change abort_connection() to not aquire the ep mutex for setting the state, and make all calls to abort_connection() do so with the mutex held. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/isdn/Kconfig')
0 files changed, 0 insertions, 0 deletions