summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-02-03 06:26:59 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-02-03 06:26:58 -0800
commit33d448626003f724f0d6aa23d92c85730419d205 (patch)
tree52ecf2ea724012d1ebf5d3d7f43be9d0b7d700a0 /sound/soc
parent9ffdcf0122c77a0ee77d692cfc45ae5345f0e6f9 (diff)
parent937bc9e644180e258c68662095861803f7ba4ded (diff)
Merge "ASoC: msm: qdsp6v2: completely deallocate on cal block creation failure"
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/msm/qdsp6v2/audio_cal_utils.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/soc/msm/qdsp6v2/audio_cal_utils.c b/sound/soc/msm/qdsp6v2/audio_cal_utils.c
index 75af648baef3..b54cde4ef0c3 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;