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

Reply via email to