fix the memory leak t3413 paging timer in MME_UE Context

This commit is contained in:
Sukchan Lee 2018-01-29 16:47:07 +09:00
parent ae6e747e52
commit b704e94efa
10 changed files with 37 additions and 38 deletions

View File

@ -44,6 +44,13 @@ status_t tm_init(void)
status_t tm_final(void)
{
if (pool_size(&timer_pool) != pool_avail(&timer_pool))
d_error("%d not freed in timer_pool[%d]",
pool_size(&timer_pool) - pool_avail(&timer_pool),
pool_size(&timer_pool));
d_trace(9, "%d not freed in timer_pool[%d]\n",
pool_size(&timer_pool) - pool_avail(&timer_pool),
pool_size(&timer_pool));
pool_final(&timer_pool);
return CORE_OK;
}

View File

@ -79,6 +79,26 @@ status_t context_read_file()
return CORE_OK;
}
status_t context_setup_trace_module()
{
int app = context_self()->logger.trace.app;
if (app)
{
extern int _mutex;
d_trace_level(&_mutex, app);
extern int _pkbuf;
d_trace_level(&_pkbuf, app);
extern int _timer;
d_trace_level(&_timer, app);
extern int _context;
d_trace_level(&_context, app);
}
return CORE_OK;
}
static status_t context_prepare()
{
self.logger.console = -1;

View File

@ -69,6 +69,7 @@ CORE_DECLARE(context_t*) context_self(void);
CORE_DECLARE(status_t) context_read_file(void);
CORE_DECLARE(status_t) context_parse_config(void);
CORE_DECLARE(status_t) context_setup_trace_module(void);
CORE_DECLARE(status_t) context_db_init(const char *db_uri);
CORE_DECLARE(status_t) context_db_final(void);

View File

@ -33,6 +33,9 @@ status_t app_will_initialize(const char *config_path, const char *log_path)
rv = context_parse_config();
if (rv != CORE_OK) return rv;
rv = context_setup_trace_module();
if (rv != CORE_OK) return rv;
app = context_self()->logger.trace.app;
if (app)
{

View File

@ -311,13 +311,6 @@ status_t hss_context_setup_trace_module()
if (app)
{
extern int _mutex;
d_trace_level(&_mutex, app);
extern int _pkbuf;
d_trace_level(&_pkbuf, app);
extern int _context;
d_trace_level(&_context, app);
extern int _hss_context;
d_trace_level(&_hss_context, app);
}

View File

@ -1460,13 +1460,6 @@ status_t mme_context_setup_trace_module()
if (app)
{
extern int _mutex;
d_trace_level(&_mutex, app);
extern int _pkbuf;
d_trace_level(&_pkbuf, app);
extern int _context;
d_trace_level(&_context, app);
extern int _mme_context;
d_trace_level(&_mme_context, app);
extern int _mme_sm;
@ -1882,7 +1875,7 @@ status_t mme_ue_remove(mme_ue_t *mme_ue)
/* Clear the saved PDN Connectivity Request */
NAS_CLEAR_DATA(&mme_ue->pdn_connectivity_request);
/* Clear Paging info : t3413, last_paing_msg */
/* Clear Paging info : stop t3413, last_paing_msg */
CLEAR_PAGING_INFO(mme_ue);
/* Free UeRadioCapability */
@ -1899,6 +1892,9 @@ status_t mme_ue_remove(mme_ue_t *mme_ue)
/* Clear Transparent Container */
S1AP_CLEAR_DATA(&mme_ue->container);
/* Delete All Timers */
tm_delete(mme_ue->t3413);
mme_sess_remove_all(mme_ue);
mme_pdn_remove_all(mme_ue);

View File

@ -390,7 +390,7 @@ void s1ap_handle_initial_context_setup_failure(
"nas_send_service_reject() failed");
#endif
#if 1 /* Implicitly Detach */
#if 1 /* Implicit Release */
d_trace(5, " Implicit Release\n");
rv = mme_ue_deassociate_enb_ue(enb_ue);
d_assert(rv == CORE_OK,, "mme_ue_deassociate_enb_ue() failed");
@ -398,7 +398,7 @@ void s1ap_handle_initial_context_setup_failure(
rv = enb_ue_remove(enb_ue);
d_assert(rv == CORE_OK,, "enb_ue_remove() failed");
#else /* Explicitly Detach */
#else /* Explicit Release */
d_trace(5, " Explicit Release\n");
#if 1 /* NAS Cause : Detach */

View File

@ -319,13 +319,6 @@ status_t pcrf_context_setup_trace_module()
if (app)
{
extern int _mutex;
d_trace_level(&_mutex, app);
extern int _pkbuf;
d_trace_level(&_pkbuf, app);
extern int _context;
d_trace_level(&_context, app);
extern int _pcrf_context;
d_trace_level(&_pcrf_context, app);
}

View File

@ -863,13 +863,6 @@ status_t pgw_context_setup_trace_module()
if (app)
{
extern int _mutex;
d_trace_level(&_mutex, app);
extern int _pkbuf;
d_trace_level(&_pkbuf, app);
extern int _context;
d_trace_level(&_context, app);
extern int _pgw_context;
d_trace_level(&_pgw_context, app);
}

View File

@ -461,13 +461,6 @@ status_t sgw_context_setup_trace_module()
if (app)
{
extern int _mutex;
d_trace_level(&_mutex, app);
extern int _pkbuf;
d_trace_level(&_pkbuf, app);
extern int _context;
d_trace_level(&_context, app);
extern int _sgw_context;
d_trace_level(&_sgw_context, app);
}