OSDN Git Service

ASoC: wcd_cpe_core: add size check for WDSP ELF files
authorXiaoyu Ye <benyxy@codeaurora.org>
Tue, 16 Jan 2018 00:10:30 +0000 (16:10 -0800)
committerGerrit - the friendly Code Review server <code-review@localhost>
Wed, 17 Jan 2018 08:10:48 +0000 (00:10 -0800)
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>
sound/soc/codecs/wcd_cpe_core.c

index 9218786..c5c3860 100644 (file)
@@ -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;