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>
此提交包含在:
@@ -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);
|
||||
|
新增問題並參考
封鎖使用者