diff options
author | Lokesh Vutla <lokeshvutla@ti.com> | 2019-09-04 16:01:28 +0530 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-10-11 10:07:34 -0400 |
commit | 14d963d1b51fc7a57b8d561588f163d7cae8ed81 (patch) | |
tree | defff9e9b73fe3343a136bb7d2e62b7e9738a5c6 /drivers/remoteproc/rproc-elf-loader.c | |
parent | c08eb936263c67312cb55c354277f9dc3433b194 (diff) | |
download | u-boot-14d963d1b51fc7a57b8d561588f163d7cae8ed81.tar.gz u-boot-14d963d1b51fc7a57b8d561588f163d7cae8ed81.tar.xz u-boot-14d963d1b51fc7a57b8d561588f163d7cae8ed81.zip |
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.c | 11 |
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); |