mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-12 01:14:22 -05:00
49 lines
1.7 KiB
Diff
49 lines
1.7 KiB
Diff
|
From 937bc9e644180e258c68662095861803f7ba4ded Mon Sep 17 00:00:00 2001
|
||
|
From: Siena Richard <sienar@codeaurora.org>
|
||
|
Date: Mon, 23 Jan 2017 13:15:58 -0800
|
||
|
Subject: ASoC: msm: qdsp6v2: completely deallocate on cal block creation
|
||
|
failure
|
||
|
|
||
|
Completely deallocate the cal block if creation fails to ensure no
|
||
|
memory leaks are present.
|
||
|
|
||
|
CRs-Fixed: 1112751
|
||
|
Change-Id: I76916c8b3f7e8e9b864dc39dab96f7d330774473
|
||
|
Signed-off-by: Siena Richard <sienar@codeaurora.org>
|
||
|
---
|
||
|
sound/soc/msm/qdsp6v2/audio_cal_utils.c | 4 +++-
|
||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/sound/soc/msm/qdsp6v2/audio_cal_utils.c b/sound/soc/msm/qdsp6v2/audio_cal_utils.c
|
||
|
index 75af648..b54cde4 100644
|
||
|
--- a/sound/soc/msm/qdsp6v2/audio_cal_utils.c
|
||
|
+++ b/sound/soc/msm/qdsp6v2/audio_cal_utils.c
|
||
|
@@ -607,7 +607,6 @@ static struct cal_block_data *create_cal_block(struct cal_type_data *cal_type,
|
||
|
}
|
||
|
|
||
|
INIT_LIST_HEAD(&cal_block->list);
|
||
|
- list_add_tail(&cal_block->list, &cal_type->cal_blocks);
|
||
|
|
||
|
cal_block->map_data.ion_map_handle = basic_cal->cal_data.mem_handle;
|
||
|
if (basic_cal->cal_data.mem_handle > 0) {
|
||
|
@@ -639,6 +638,7 @@ static struct cal_block_data *create_cal_block(struct cal_type_data *cal_type,
|
||
|
goto err;
|
||
|
}
|
||
|
cal_block->buffer_number = basic_cal->cal_hdr.buffer_number;
|
||
|
+ list_add_tail(&cal_block->list, &cal_type->cal_blocks);
|
||
|
pr_debug("%s: created block for cal type %d, buf num %d, map handle %d, map size %zd paddr 0x%pK!\n",
|
||
|
__func__, cal_type->info.reg.cal_type,
|
||
|
cal_block->buffer_number,
|
||
|
@@ -648,6 +648,8 @@ static struct cal_block_data *create_cal_block(struct cal_type_data *cal_type,
|
||
|
done:
|
||
|
return cal_block;
|
||
|
err:
|
||
|
+ kfree(cal_block->cal_info);
|
||
|
+ kfree(cal_block->client_info);
|
||
|
kfree(cal_block);
|
||
|
cal_block = NULL;
|
||
|
return cal_block;
|
||
|
--
|
||
|
cgit v1.1
|
||
|
|