Fix memory leak for QOS string parameters.

 Signed-off-by: Slava Strebkov <sla...@amirm.voltaire.com>

---
 opensm/opensm/osm_subnet.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/opensm/opensm/osm_subnet.c b/opensm/opensm/osm_subnet.c
index 122d4dd..f8b29f8 100644
--- a/opensm/opensm/osm_subnet.c
+++ b/opensm/opensm/osm_subnet.c
@@ -331,6 +331,21 @@ static void subn_init_qos_options(IN osm_qos_options_t * 
opt)
        opt->sl2vl = NULL;
 }
 
+static void subn_free_qos_options(IN osm_qos_options_t * opt)
+{
+       if ((opt->vlarb_high) && (opt->vlarb_high != 
OSM_DEFAULT_QOS_VLARB_HIGH)) {
+               free(opt->vlarb_high);
+       }
+
+       if ((opt->vlarb_low) && (opt->vlarb_low != OSM_DEFAULT_QOS_VLARB_LOW)) {
+               free(opt->vlarb_low);
+       }
+
+       if ((opt->sl2vl) && (opt->sl2vl != OSM_DEFAULT_QOS_SL2VL)) {
+               free(opt->sl2vl);
+       }
+}
+
 /**********************************************************************
  **********************************************************************/
 void osm_subn_set_default_opt(IN osm_subn_opt_t * const p_opt)
@@ -1263,6 +1278,12 @@ int osm_subn_rescan_conf_files(IN osm_subn_t * const 
p_subn)
                return -1;
        }
 
+       subn_free_qos_options(&p_subn->opt.qos_options);
+       subn_free_qos_options(&p_subn->opt.qos_ca_options);
+       subn_free_qos_options(&p_subn->opt.qos_sw0_options);
+       subn_free_qos_options(&p_subn->opt.qos_swe_options);
+       subn_free_qos_options(&p_subn->opt.qos_rtr_options);
+
        subn_init_qos_options(&p_subn->opt.qos_options);
        subn_init_qos_options(&p_subn->opt.qos_ca_options);
        subn_init_qos_options(&p_subn->opt.qos_sw0_options);
-- 
1.5.6

_______________________________________________
general mailing list
general@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to