summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiaoyu Ye <benyxy@codeaurora.org>2018-01-15 16:10:30 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-01-17 00:10:48 -0800
commit3889ccc1dae7ed4e9c21d3480303714a6942d0c8 (patch)
treed8e5ab68ee2ef25698205dc45c07f6e877c2c4f2
parenta1410220e6e51dfa5e0f08e2922ceca202702bb1 (diff)
ASoC: wcd_cpe_core: add size check for WDSP ELF files
Add size check to make sure the data sizes from WDSP ELF metadata and the split firmware ELF are the same. Change-Id: Ic2f7dc04dfc95608302cba23461c519378619db0 Signed-off-by: Xiaoyu Ye <benyxy@codeaurora.org>
-rw-r--r--sound/soc/codecs/wcd_cpe_core.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sound/soc/codecs/wcd_cpe_core.c b/sound/soc/codecs/wcd_cpe_core.c
index 9218786f913f..c5c386067942 100644
--- a/sound/soc/codecs/wcd_cpe_core.c
+++ b/sound/soc/codecs/wcd_cpe_core.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -337,6 +337,14 @@ static int wcd_cpe_load_each_segment(struct wcd_cpe_core *core,
goto done;
}
+ if (phdr->p_filesz != split_fw->size) {
+ dev_err(core->dev,
+ "%s: %s size mismatch, phdr_size: 0x%x fw_size: 0x%zx",
+ __func__, split_fname, phdr->p_filesz, split_fw->size);
+ ret = -EINVAL;
+ goto done;
+ }
+
segment->cpe_addr = phdr->p_paddr;
segment->size = phdr->p_filesz;
segment->data = (u8 *) split_fw->data;