RDMA/nes: Fix crash when listener destroyed during loopback setup
When a listener is destroyed and there is an MPA response pending for loopback connection, the active side cm_node gets destroyed twice: once in cm_event_connect_error() and again in nes_accept()/nes_reject(). Increment the cm_node's refcount so it's not destroyed by cm_event_connect_error(). Signed-off-by: Faisal Latif <faisal.latif@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
Родитель
6e10d2e407
Коммит
43093b9412
|
@ -1011,9 +1011,10 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
|
|||
event.cm_info.loc_port =
|
||||
loopback->loc_port;
|
||||
event.cm_info.cm_id = loopback->cm_id;
|
||||
add_ref_cm_node(loopback);
|
||||
loopback->state = NES_CM_STATE_CLOSED;
|
||||
cm_event_connect_error(&event);
|
||||
cm_node->state = NES_CM_STATE_LISTENER_DESTROYED;
|
||||
loopback->state = NES_CM_STATE_CLOSED;
|
||||
|
||||
rem_ref_cm_node(cm_node->cm_core,
|
||||
cm_node);
|
||||
|
|
Загрузка…
Ссылка в новой задаче