hal: fix resource leak issues in platform.c
- fix resource leak issues related to mixer
controls and file handles
Change-Id: I3675da4504a93a084ad582e5e6eb7c75f38e736e
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 4839451..7cdfc62 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -1677,6 +1677,7 @@
ALOGE("%s: Failed to init audio route controls, aborting.",
__func__);
free(my_data);
+ mixer_close(adev->mixer);
return NULL;
}
adev->snd_card = snd_card_num;
@@ -1686,6 +1687,7 @@
}
retry_num = 0;
snd_card_num++;
+ mixer_close(adev->mixer);
}
if (snd_card_num >= MAX_SND_CARD) {
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c
index e7d6920..be50289 100644
--- a/hal/msm8960/platform.c
+++ b/hal/msm8960/platform.c
@@ -243,6 +243,7 @@
adev->audio_route = audio_route_init(MIXER_CARD, MIXER_XML_PATH);
if (!adev->audio_route) {
ALOGE("%s: Failed to init audio route controls, aborting.", __func__);
+ mixer_close(adev->mixer);
return NULL;
}
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index e091547..65ef702 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1335,6 +1335,7 @@
if (!snd_card_name) {
ALOGE("failed to allocate memory for snd_card_name\n");
free(my_data);
+ mixer_close(adev->mixer);
return NULL;
}
ALOGD("%s: snd_card_name: %s", __func__, snd_card_name);
@@ -1401,6 +1402,7 @@
free(my_data);
free(snd_card_name);
free(snd_card_name_t);
+ mixer_close(adev->mixer);
return NULL;
}
adev->snd_card = snd_card_num;
@@ -1409,6 +1411,7 @@
}
retry_num = 0;
snd_card_num++;
+ mixer_close(adev->mixer);
}
if (snd_card_num >= MAX_SND_CARD) {