Hi Mahesh,

immnd_cb->clm_hdl should be cleared when CLM invalidates the handle. CLM handle 
should not be closed when the node goes headless.
immnd_cb->clm_hdl is set to 0 in main() function when CLM handle is invalidated 
and selected object closed. That's the last line in the patch where 
immnd_cb->clm_hdl is set to 0.

Thanks,
Zoran

-----Original Message-----
From: A V Mahesh [mailto:mahesh.va...@oracle.com] 
Sent: den 16 augusti 2017 05:59
To: Zoran Milinkovic <zoran.milinko...@ericsson.com>
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [PATCH 1/1] imm: fix immnd coredump due to initialized CLM handle 
[#2549]

Hi Zoran ,

ACK , with following , not tested.

Please check that  the `immnd_cb->clm_hdl` cleared on Headless case.

-AVM


On 8/9/2017 5:14 PM, Zoran Milinkovic wrote:
> Initially CLM handle is set to 0. When CLM handle is initialized, it 
> can be initialized again only when saClmDispatch returns 
> SA_AIS_ERR_BAD_HANDLE.
> This will prevent coredumps with initialized CLM handle caused with 
> MDS UP message for AMF and CLM services.
> ---
>   src/imm/immnd/immnd_clm.c  | 7 +++++++
>   src/imm/immnd/immnd_main.c | 8 +++++---
>   2 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/src/imm/immnd/immnd_clm.c b/src/imm/immnd/immnd_clm.c 
> index 4019439..beae739 100644
> --- a/src/imm/immnd/immnd_clm.c
> +++ b/src/imm/immnd/immnd_clm.c
> @@ -199,6 +199,11 @@ void *immnd_clm_init_thread(void *cb)
>   {
>       TRACE_ENTER();
>   
> +     if(immnd_cb->clm_hdl) {
> +             TRACE("CLM handle has already been initialized.");
> +             goto done;
> +     }
> +
>       SaAisErrorT rc =
>           saClmInitialize_4(&immnd_cb->clm_hdl, &clm_callbacks, &clmVersion);
>       while ((rc == SA_AIS_ERR_TRY_AGAIN) || (rc == SA_AIS_ERR_TIMEOUT) 
> || @@ -228,6 +233,8 @@ void *immnd_clm_init_thread(void *cb)
>               exit(EXIT_FAILURE);
>       }
>       TRACE("CLM Initialization SUCCESS......");
> +
> +done:
>       TRACE_LEAVE();
>       return NULL;
>   }
> diff --git a/src/imm/immnd/immnd_main.c b/src/imm/immnd/immnd_main.c 
> index bca8f80..0f8364d 100644
> --- a/src/imm/immnd/immnd_main.c
> +++ b/src/imm/immnd/immnd_main.c
> @@ -423,11 +423,12 @@ int main(int argc, char *argv[])
>                       }
>   
>                       if (fds[FD_CLM_INIT].revents & POLLIN) {
> -                             osafassert(!immnd_cb->clm_hdl);
> -                             TRACE("Initalize CLM ");
>                               ncs_sel_obj_rmv_ind(&immnd_cb->clm_init_sel_obj,
>                                                   true, true);
> -                             immnd_init_with_clm();
> +                             if(!immnd_cb->clm_hdl) {
> +                                     TRACE("Initalize CLM ");
> +                                     immnd_init_with_clm();
> +                             }
>                               nfds = 5;
>                       }
>   
> @@ -445,6 +446,7 @@ int main(int argc, char *argv[])
>                                                   immnd_cb->clm_hdl);
>                                               immnd_clm_node_cleanup(
>                                                   immnd_cb);
> +                                             immnd_cb->clm_hdl = 0;
>                                               immnd_cb->clmSelectionObject =
>                                                   -1;
>                                               immnd_init_with_clm();

------------------------------------------------------------------------------
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