From a592ac17ace56c8ef8fa21a78e9748ebc4b0860f Mon Sep 17 00:00:00 2001 From: leo lin Date: Wed, 28 Aug 2019 08:10:18 +0800 Subject: [PATCH] [s9180] fix onlpd memory leakage for bmc enabled platform --- .../src/onlp/module/src/platform_manager.c | 4 ++++ .../module/src/sysi.c | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/packages/base/any/onlp/src/onlp/module/src/platform_manager.c b/packages/base/any/onlp/src/onlp/module/src/platform_manager.c index 75054d6f..0e7b8c00 100644 --- a/packages/base/any/onlp/src/onlp/module/src/platform_manager.c +++ b/packages/base/any/onlp/src/onlp/module/src/platform_manager.c @@ -306,6 +306,8 @@ platform_psus_notify__(void) ONLP_OID_TABLE_ITER_TYPE(si.hdr.coids, oidp, PSU) { psu_oid_table[i++] = *oidp; } + /* free allocated memory */ + onlp_sys_info_free(&si); } for(i = 0; i < AIM_ARRAYSIZE(psu_oid_table); i++) { @@ -417,6 +419,8 @@ platform_fans_notify__(void) ONLP_OID_TABLE_ITER_TYPE(si.hdr.coids, oidp, FAN) { fan_oid_table[i++] = *oidp; } + /* free allocated memory */ + onlp_sys_info_free(&si); } for(i = 0; i < AIM_ARRAYSIZE(fan_oid_table); i++) { diff --git a/packages/platforms/ingrasys/x86-64/s9180-32x/onlp/builds/x86_64_ingrasys_s9180_32x/module/src/sysi.c b/packages/platforms/ingrasys/x86-64/s9180-32x/onlp/builds/x86_64_ingrasys_s9180_32x/module/src/sysi.c index 442a15e9..f3237f38 100755 --- a/packages/platforms/ingrasys/x86-64/s9180-32x/onlp/builds/x86_64_ingrasys_s9180_32x/module/src/sysi.c +++ b/packages/platforms/ingrasys/x86-64/s9180-32x/onlp/builds/x86_64_ingrasys_s9180_32x/module/src/sysi.c @@ -84,6 +84,14 @@ onlp_sysi_onie_data_get(uint8_t** data, int* size) return ONLP_STATUS_E_INTERNAL; } +void +onlp_sysi_onie_data_free(uint8_t* data) +{ + if (data) { + aim_free(data); + } +} + int onlp_sysi_oids_get(onlp_oid_t* table, int max) { @@ -381,3 +389,15 @@ onlp_sysi_platform_info_get(onlp_platform_info_t* pi) return ONLP_STATUS_OK; } +void +onlp_sysi_platform_info_free(onlp_platform_info_t* pi) +{ + if (pi->cpld_versions) { + aim_free(pi->cpld_versions); + } + + if (pi->cpld_versions) { + aim_free(pi->other_versions); + } +} +