DivestOS/Patches/Linux_CVEs/CVE-2016-10287/ANY/0001.patch
2017-11-07 17:32:46 -05:00

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