Hi Alex, ACK from me. Tested with basic behavior.
Sincerely, Hoang -----Original Message----- From: Alex Jones [mailto:alex.jo...@genband.com] Sent: Monday, October 23, 2017 10:13 PM To: hoang.m...@dektech.com.au Cc: opensaf-devel@lists.sourceforge.net; Alex Jones <alex.jo...@genband.com> Subject: [PATCH 2/2] ckptnd: fix crash during checkpoint open timeout with large sections [#1510] v2 --- src/ckpt/ckptnd/cpnd_evt.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/ckpt/ckptnd/cpnd_evt.c b/src/ckpt/ckptnd/cpnd_evt.c index a968f34..90b4e6c 100644 --- a/src/ckpt/ckptnd/cpnd_evt.c +++ b/src/ckpt/ckptnd/cpnd_evt.c @@ -702,7 +702,6 @@ static uint32_t cpnd_evt_proc_ckpt_open(CPND_CB *cb, CPND_EVT *evt, CPSV_EVT send_evt, *out_evt = NULL; SaConstStringT ckpt_name = NULL; uint32_t rc = NCSCC_RC_SUCCESS; - bool node_added = false; CPND_CPD_DEFERRED_REQ_NODE *node = NULL; CPND_CKPT_CLIENT_NODE *cl_node = NULL; CPND_CKPT_NODE *cp_node = NULL; @@ -1027,8 +1026,6 @@ static uint32_t cpnd_evt_proc_ckpt_open(CPND_CB *cb, CPND_EVT *evt, goto ckpt_shm_node_free_error; } - node_added = true; - if (out_evt->info.cpnd.info.ckpt_info.ckpt_rep_create == true && cp_node->create_attrib.maxSections == 1) { @@ -1038,7 +1035,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(CPND_CB *cb, CPND_EVT *evt, TRACE_4( "cpnd ckpt rep create failed with rc:%d", rc); - goto ckpt_shm_node_free_error; + goto ckpt_node_del_error; } } cpnd_evt_destroy(out_evt); @@ -1101,7 +1098,7 @@ static uint32_t cpnd_evt_proc_ckpt_open(CPND_CB *cb, CPND_EVT *evt, (out_evt->info.cpnd.error != SA_AIS_OK)) { send_evt.info.cpa.info.openRsp.error = out_evt->info.cpnd.error; - goto ckpt_shm_node_free_error; + goto ckpt_node_del_error; } else if ((out_evt) && (out_evt->info.cpnd.error == SA_AIS_OK) && @@ -1173,6 +1170,11 @@ static uint32_t cpnd_evt_proc_ckpt_open(CPND_CB *cb, CPND_EVT *evt, TRACE_4("cpnd ckpt open failure client_hdl:%llx", client_hdl); goto agent_rsp; +ckpt_node_del_error: + rc = cpnd_ckpt_node_del(cb, cp_node); + if (rc == NCSCC_RC_FAILURE) + LOG_ER("cpnd client tree del failed"); + ckpt_shm_node_free_error: cpnd_ckpt_replica_destroy(cb, cp_node, &error); @@ -1204,12 +1206,6 @@ ckpt_node_free_error: cpnd_tmr_stop(&cp_node->ret_tmr); cpnd_ckpt_sec_map_destroy(&cp_node->replica_info); - if (node_added) { - rc = cpnd_ckpt_node_del(cb, cp_node); - if (rc == NCSCC_RC_FAILURE) - LOG_ER("cpnd client tree del failed"); - } - m_MMGR_FREE_CPND_CKPT_NODE(cp_node); agent_rsp: -- 2.9.5 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel