diff options
author | Nick Bofferding <bofferdn@us.ibm.com> | 2018-05-31 15:12:26 -0500 |
---|---|---|
committer | Nicholas E. Bofferding <bofferdn@us.ibm.com> | 2018-06-04 11:30:30 -0400 |
commit | 6359b6a6e881a569c8588b6f2701a71e479fb5ae (patch) | |
tree | 3950407291902ceb9fefff5664df58ea941acbe9 /src | |
parent | a0ea8ab738073bc5c31c25d9f44fca0dfe09df16 (diff) | |
download | talos-hostboot-6359b6a6e881a569c8588b6f2701a71e479fb5ae.tar.gz talos-hostboot-6359b6a6e881a569c8588b6f2701a71e479fb5ae.zip |
Fix memory leaks associated with various msg_sendrecv calls
Change-Id: I30bb6627610391aea248d4a3c4d722ef1695b02f
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59677
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: ILYA SMIRNOV <ismirno@us.ibm.com>
Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com>
Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/usr/console/console.C | 5 | ||||
-rw-r--r-- | src/usr/errl/errlmanager.C | 6 | ||||
-rw-r--r-- | src/usr/runtime/populate_hbruntime.C | 4 | ||||
-rw-r--r-- | src/usr/trace/daemonif.C | 8 |
4 files changed, 20 insertions, 3 deletions
diff --git a/src/usr/console/console.C b/src/usr/console/console.C index 8a066fe85..eed9756cd 100644 --- a/src/usr/console/console.C +++ b/src/usr/console/console.C @@ -8,7 +8,6 @@ /* Contributors Listed Below - COPYRIGHT 2014 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ -/* [+] Google Inc. */ /* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ @@ -107,6 +106,10 @@ namespace CONSOLE msg_t* msg = msg_allocate(); msg->type = SYNC; msg_sendrecv(g_msgq, msg); + + // Always free since send/recv implies ownership + msg_free(msg); + msg=nullptr; } } diff --git a/src/usr/errl/errlmanager.C b/src/usr/errl/errlmanager.C index 24008e7ea..4476640f7 100644 --- a/src/usr/errl/errlmanager.C +++ b/src/usr/errl/errlmanager.C @@ -821,13 +821,17 @@ void ErrlManager::flushErrorLogs() TRACDCOMP( g_trac_errl, ENTER_MRK "ErrlManager::flushErrorLogs" ); // Create message to send to msg handler - msg_t *msg = NULL; + msg_t *msg = nullptr; msg = msg_allocate(); msg->type = ERRLOG_FLUSH_TYPE; do{ // Send message to msg handler, get msg back on l_RecvMsgQ int rc = msg_sendrecv(iv_msgQ,msg); + // Always free the message since send/recv implies ownership + msg_free(msg); + msg=nullptr; + if(rc) { TRACFCOMP(g_trac_errl, "Error sending error log flush message. " diff --git a/src/usr/runtime/populate_hbruntime.C b/src/usr/runtime/populate_hbruntime.C index 129068941..5e2c8ddb2 100644 --- a/src/usr/runtime/populate_hbruntime.C +++ b/src/usr/runtime/populate_hbruntime.C @@ -3286,6 +3286,10 @@ errlHndl_t persistent_rwAttrRuntimeCheck( void ) } } + // Always free the message since send/recv implies ownership + msg_free(l_msg); + l_msg=nullptr; + return l_err; } // end persistent_rwAttrRuntimeCheck diff --git a/src/usr/trace/daemonif.C b/src/usr/trace/daemonif.C index f84844800..90e3fbec0 100644 --- a/src/usr/trace/daemonif.C +++ b/src/usr/trace/daemonif.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2012,2016 */ +/* Contributors Listed Below - COPYRIGHT 2012,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -40,6 +40,7 @@ namespace TRACE msg->type = TRACE_DAEMON_SHUTDOWN; msg_sendrecv(iv_queue, msg); msg_free(msg); + msg=nullptr; } msg_q_destroy(iv_queue); @@ -58,6 +59,10 @@ namespace TRACE if (i_blocking) { msg_sendrecv(iv_queue, msg); // sync message due to 'blocking'. + + // Always free the message since send/receive implies ownership + msg_free(msg); + msg=nullptr; } else { @@ -76,6 +81,7 @@ namespace TRACE msg->data[0] = i_enable ? 0x2 : 0x0; msg_sendrecv(iv_queue, msg); msg_free(msg); + msg=nullptr; } } |