RDMA/nes: abnormal listener termination causes loopback node crash
PATCH 6/11 RDMA/nes: abnormal listener termination causes loopback node crash
when listener is destroyed for loopback connection, listener node is getting reset event. This causes crash as listener is not expecting reset event. Code review of cm_event_reset() durring debugging showed the cm_id ref count in incrementing after calling its event handler and not before.
--- drivers/infiniband/hw/nes/nes_cm.c | 16 +++------------- 1 files changed, 3 insertions(+), 13 deletions(-)
drivers/infiniband/hw/nes/nes_cm.c +3 -13
@@ -1014,18 +1014,6 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core, cm_node->state =NES_CM_STATE_LISTENER_DESTROYED ; loopback->state =NES_CM_STATE_CLOSED ; - event.cm_node = cm_node; - event.cm_info.rem_addr = - cm_node->rem_addr; - event.cm_info.loc_addr = - cm_node->loc_addr; - event.cm_info.rem_port = - cm_node->rem_port; - event.cm_info.loc_port = - cm_node->loc_port; - event.cm_info.cm_id = cm_node->cm_id; -cm_event_reset (&event); -rem_ref_cm_node (cm_node->cm_core, cm_node);
@@ -3440,6 +3428,8 @@ static void cm_event_reset(struct nes_cm_event *event)nes_debug (NES_DBG_CM ,"%p - cm_id = %p\n" , event->cm_node, cm_id); nesqp = cm_id->provider_data; +if (!nesqp) +return ; nesqp->cm_id =NULL ;/* cm_id->provider_data = NULL; */
@@ -3451,8 +3441,8 @@ static void cm_event_reset(struct nes_cm_event *event) cm_event.private_data =NULL ; cm_event.private_data_len =0 ; - ret = cm_id->event_handler (cm_id, &cm_event); cm_id->add_ref (cm_id); + ret = cm_id->event_handler (cm_id, &cm_event);atomic_inc (&cm_closes); cm_event.event =IW_CM_EVENT_CLOSE ; cm_event.status =IW_CM_EVENT_STATUS_OK ;
Signature · 6 lines
1.5.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 1 line · Faisal Latif
when listener is destroyed for loopback connection
Does the upstream iwarp stack supports loopback connections? does it apply to all vendors?
Or.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 4B20A00C.1070607-smomgflXvOZWk0Htik3J/[email protected]
Quoted 4 lines
Quoted 1 line · Faisal Latif
when listener is destroyed for loopback connection
Does the upstream iwarp stack supports loopback connections?
Yes.
Quoted 1 line
does it apply to all vendors?
Yes but Chelsio handles loopback differently from Intel/NetEffect.
This topic came up before, see:
http://lists.openfabrics.org/pipermail/general/2009-July/060542.html
http://lists.openfabrics.org/pipermail/general/2009-July/060548.html
Chien
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 5 lines · Or Gerlitz
Quoted 1 line · Faisal Latif
when listener is destroyed for loopback connection
Does the upstream iwarp stack supports loopback connections? does it apply to all vendors?
Or.
Loopback support is provider-specific. There is no software iwarp loopback, if that's what your asking. But the upstream core code doesn't prohibit providers from supporting hw-loopback connections.
Steve.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html