Re: [devel] [PATCH 2/2] ckptnd: fix crash during checkpoint open timeout with large sections [#1510]

2017-10-23 Thread Vo Minh Hoang
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 
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, );
 
@@ -1204,12 +1206,6 @@ ckpt_node_free_error:
cpnd_tmr_stop(_node->ret_tmr);
cpnd_ckpt_sec_map_destroy(_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


[devel] [PATCH 2/2] ckptnd: fix crash during checkpoint open timeout with large sections [#1510]

2017-10-23 Thread Alex Jones
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, );
 
@@ -1204,12 +1206,6 @@ ckpt_node_free_error:
cpnd_tmr_stop(_node->ret_tmr);
cpnd_ckpt_sec_map_destroy(_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