I have created ticket [#2275] for removing this stuff.

regards,

Anders Widell


On 01/24/2017 10:58 AM, Zoran Milinkovic wrote:
> Hi Anders,
>
> I'll add your comment when I push the patch.
>
> Thanks,
> Zoran
>
> -----Original Message-----
> From: Anders Widell
> Sent: den 10 januari 2017 15:38
> To: Zoran Milinkovic <zoran.milinko...@ericsson.com>; ramesh.bet...@oracle.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: Re: [devel] [PATCH 1 of 1] base: fix memory leak and timer state in 
> sysf_tmr.c [#2251]
>
> Ack with comments inline, marked AndersW>
>
> regards,
>
> Anders Widell
>
>
> On 01/04/2017 03:28 PM, Zoran Milinkovic wrote:
>>    src/base/sysf_tmr.c |  9 ++++++++-
>>    1 files changed, 8 insertions(+), 1 deletions(-)
>>
>>
>> Fix memory leak in ncs_tmr_add_pat_node() Fix timer state, so that the
>> timer will not execute if ncs_tmr_start() fails
>>
>> diff --git a/src/base/sysf_tmr.c b/src/base/sysf_tmr.c
>> --- a/src/base/sysf_tmr.c
>> +++ b/src/base/sysf_tmr.c
>> @@ -180,6 +180,7 @@ static struct timespec ts_start;
>>    static uint32_t ncs_tmr_add_pat_node(SYSF_TMR *tmr)
>>    {
>>      SYSF_TMR_PAT_NODE *temp_tmr_pat_node = NULL;
>> +    int rc;
> AndersW> should be "unsigned int" to match the return type of
> ncs_patricia_tree_add()
>>    
>>      temp_tmr_pat_node = (SYSF_TMR_PAT_NODE
>> *)ncs_patricia_tree_get(&gl_tcb.tmr_pat_tree, (uint8_t *)&tmr->key);
>>    
>> @@ -190,7 +191,11 @@ static uint32_t ncs_tmr_add_pat_node(SYS
>>              memset(temp_tmr_pat_node, '\0', sizeof(SYSF_TMR_PAT_NODE));
>>              temp_tmr_pat_node->key = tmr->key;
>>              temp_tmr_pat_node->pat_node.key_info = (uint8_t 
>> *)&temp_tmr_pat_node->key;
>> -            ncs_patricia_tree_add(&gl_tcb.tmr_pat_tree, (NCS_PATRICIA_NODE 
>> *)&temp_tmr_pat_node->pat_node);
>> +            rc = ncs_patricia_tree_add(&gl_tcb.tmr_pat_tree, 
>> (NCS_PATRICIA_NODE *)&temp_tmr_pat_node->pat_node);
>> +            if(rc != NCSCC_RC_SUCCESS) {
>> +                    m_NCS_MEM_FREE(temp_tmr_pat_node, 
>> NCS_MEM_REGION_PERSISTENT, NCS_SERVICE_ID_LEAP_TMR, 0);
>> +                    return NCSCC_RC_FAILURE;
>> +            }
>>      }
>>    
>>      if (temp_tmr_pat_node->tmr_list_start == NULL) { @@ -733,6 +738,8
>> @@ tmr_t ncs_tmr_start(tmr_t tid, int64_t t
>>                 on the "sel_obj".  */
>>              if (m_NCS_SEL_OBJ_IND(&gl_tcb.sel_obj) != NCSCC_RC_SUCCESS) {
>>                      /* We would never reach here! */
>> +                    /* Ignore this timer. Indication was not successfully 
>> sent */
>> +                    TMR_SET_STATE(tmr, TMR_STATE_DESTROY);
> AndersW> I think it is better to call osaf_abort() in this error case,
> since there must be some serious problem. Setting the timer state to 
> TMR_STATE_DESTROY could be dangerous - doesn't that mean that the timer could 
> be re-used by someone else?
>>                      m_NCS_UNLOCK(&gl_tcb.safe.enter_lock, NCS_LOCK_WRITE);
>>                      m_LEAP_DBG_SINK_VOID;
>>                      return NULL;
>>
>> ----------------------------------------------------------------------
>> -------- 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
>>


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