Fix mem leaks observed while running rsmitst

1.  Memory allocated for handle was not deleted
when no variant, subvariant or supported function
was found
2. handle->func_id_iter address was set to 0
before delete[]

Signed-off-by: Divya Shikre <DivyaUday.Shikre@amd.com>
Change-Id: Iab50fdfbe03eec8e6fd0e84e03bd2c47e645b3d8


[ROCm/rocm_smi_lib commit: b23cfc0e82]
Bu işleme şunda yer alıyor:
Divya Shikre
2022-05-18 14:30:31 -04:00
işlemeyi yapan: Divya Uday Shikre
ebeveyn 231a61a394
işleme 75467146b6
+5 -5
Dosyayı Görüntüle
@@ -3702,6 +3702,7 @@ rsmi_dev_supported_func_iterator_open(uint32_t dv_ind,
(*handle)->id_type = FUNC_ITER;
if (dev->supported_funcs()->begin() == dev->supported_funcs()->end()) {
delete *handle;
return RSMI_STATUS_NO_DATA;
} else {
SupportedFuncMapIt *supp_func_iter = new SupportedFuncMapIt;
@@ -3754,6 +3755,7 @@ rsmi_dev_supported_variant_iterator_open(
var_map_container = (*func_iter)->second;
if (var_map_container == nullptr) {
delete *var_iter;
return RSMI_STATUS_NO_DATA;
}
@@ -3771,6 +3773,7 @@ rsmi_dev_supported_variant_iterator_open(
sub_var_map_container = (*variant_itr)->second;
if (sub_var_map_container == nullptr) {
delete *var_iter;
return RSMI_STATUS_NO_DATA;
}
@@ -3808,8 +3811,8 @@ rsmi_dev_supported_func_iterator_close(rsmi_func_id_iter_handle_t *handle) {
reinterpret_cast<VariantMapIt *>((*handle)->func_id_iter);
delete var_iter;
} else if ((*handle)->id_type == SUBVARIANT_ITER) {
SubVariant *subvar_iter =
reinterpret_cast<SubVariant *>((*handle)->func_id_iter);
SubVariantIt *subvar_iter =
reinterpret_cast<SubVariantIt *>((*handle)->func_id_iter);
delete subvar_iter;
} else {
return RSMI_STATUS_INVALID_ARGS;
@@ -3884,7 +3887,6 @@ rsmi_func_iter_next(rsmi_func_id_iter_handle_t handle) {
if (*func_iter ==
reinterpret_cast<SupportedFuncMap *>(handle->container_ptr)->end()) {
handle->func_id_iter = 0;
return RSMI_STATUS_NO_DATA;
}
break;
@@ -3894,7 +3896,6 @@ rsmi_func_iter_next(rsmi_func_id_iter_handle_t handle) {
(*var_iter)++;
if (*var_iter ==
reinterpret_cast<VariantMap *>(handle->container_ptr)->end()) {
handle->func_id_iter = 0;
return RSMI_STATUS_NO_DATA;
}
break;
@@ -3904,7 +3905,6 @@ rsmi_func_iter_next(rsmi_func_id_iter_handle_t handle) {
(*sub_var_iter)++;
if (*sub_var_iter ==
reinterpret_cast<SubVariant *>(handle->container_ptr)->end()) {
handle->func_id_iter = 0;
return RSMI_STATUS_NO_DATA;
}
break;