summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabien Dessenne <fabien.dessenne@st.com>2019-09-04 10:53:22 +0300
committerTom Rini <trini@konsulko.com>2020-01-24 19:19:52 +0300
commit83b539cfd49f0fbcce4dd9d127776354031a7308 (patch)
tree8165dc2412942d2fec5c13e7a65183c754710c49
parent2c871f9e084b2c03d1961884228a6901387ab8d6 (diff)
downloadu-boot-83b539cfd49f0fbcce4dd9d127776354031a7308.tar.xz
remoteproc: elf_loader: fix program header parsing
Fix an issue where some sections are never loaded : if p_type is different from PT_LOAD the phdr pointer must be incremented. Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com> Acked-by: Suman Anna <s-anna@ti.com>
-rw-r--r--drivers/remoteproc/rproc-elf-loader.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/remoteproc/rproc-elf-loader.c b/drivers/remoteproc/rproc-elf-loader.c
index 538481241f..d234592445 100644
--- a/drivers/remoteproc/rproc-elf-loader.c
+++ b/drivers/remoteproc/rproc-elf-loader.c
@@ -189,7 +189,7 @@ int rproc_elf32_load_image(struct udevice *dev, unsigned long addr, ulong size)
ops = rproc_get_ops(dev);
/* Load each program header */
- for (i = 0; i < ehdr->e_phnum; ++i) {
+ for (i = 0; i < ehdr->e_phnum; i++, phdr++) {
void *dst = (void *)(uintptr_t)phdr->p_paddr;
void *src = (void *)addr + phdr->p_offset;
@@ -211,7 +211,6 @@ int rproc_elf32_load_image(struct udevice *dev, unsigned long addr, ulong size)
roundup((unsigned long)dst + phdr->p_filesz,
ARCH_DMA_MINALIGN) -
rounddown((unsigned long)dst, ARCH_DMA_MINALIGN));
- ++phdr;
}
return 0;