summaryrefslogtreecommitdiff
path: root/drivers/remoteproc/rproc-elf-loader.c
diff options
context:
space:
mode:
authorLokesh Vutla <lokeshvutla@ti.com>2019-09-04 13:31:28 +0300
committerTom Rini <trini@konsulko.com>2019-10-11 17:07:34 +0300
commit14d963d1b51fc7a57b8d561588f163d7cae8ed81 (patch)
treedefff9e9b73fe3343a136bb7d2e62b7e9738a5c6 /drivers/remoteproc/rproc-elf-loader.c
parentc08eb936263c67312cb55c354277f9dc3433b194 (diff)
downloadu-boot-14d963d1b51fc7a57b8d561588f163d7cae8ed81.tar.xz
remoteproc: elf_loader: Always check the validity of the image before loading
rproc_elf32_load_image() rely on user to send a valid address for elf loading. Instead do a sanity check on the address passed by user. This will help all rproc elf users to not call sanity_check explicitly before calling elf_loading. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
Diffstat (limited to 'drivers/remoteproc/rproc-elf-loader.c')
-rw-r--r--drivers/remoteproc/rproc-elf-loader.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/remoteproc/rproc-elf-loader.c b/drivers/remoteproc/rproc-elf-loader.c
index 7574ba3fb3..238f51d3b5 100644
--- a/drivers/remoteproc/rproc-elf-loader.c
+++ b/drivers/remoteproc/rproc-elf-loader.c
@@ -64,13 +64,18 @@ int rproc_elf32_sanity_check(ulong addr, ulong size)
return 0;
}
-/* A very simple elf loader, assumes the image is valid */
-int rproc_elf32_load_image(struct udevice *dev, unsigned long addr)
+int rproc_elf32_load_image(struct udevice *dev, unsigned long addr, ulong size)
{
Elf32_Ehdr *ehdr; /* Elf header structure pointer */
Elf32_Phdr *phdr; /* Program header structure pointer */
const struct dm_rproc_ops *ops;
- unsigned int i;
+ unsigned int i, ret;
+
+ ret = rproc_elf32_sanity_check(addr, size);
+ if (ret) {
+ dev_err(dev, "Invalid ELF32 Image %d\n", ret);
+ return ret;
+ }
ehdr = (Elf32_Ehdr *)addr;
phdr = (Elf32_Phdr *)(addr + ehdr->e_phoff);