Message ID | 1567583602-17022-1-git-send-email-fabien.dessenne@st.com |
---|---|
State | Accepted |
Commit | 83b539cfd49f0fbcce4dd9d127776354031a7308 |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot] remoteproc: elf_loader: fix program header parsing | expand |
On 9/4/19 2:53 AM, Fabien Dessenne wrote: > Fix an issue where some sections are never loaded : if p_type is > different from PT_LOAD the phdr pointer must be incremented. > Good catch Fabien. Fixes: 7a7c4cb0f044 ("remoteproc: add elf file load support") > Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com> Acked-by: Suman Anna <s-anna@ti.com> regards Suman > --- > drivers/remoteproc/rproc-elf-loader.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/remoteproc/rproc-elf-loader.c b/drivers/remoteproc/rproc-elf-loader.c > index 67937a7..23d502d 100644 > --- a/drivers/remoteproc/rproc-elf-loader.c > +++ b/drivers/remoteproc/rproc-elf-loader.c > @@ -78,7 +78,7 @@ int rproc_elf32_load_image(struct udevice *dev, unsigned long addr) > 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; > > @@ -99,7 +99,6 @@ int rproc_elf32_load_image(struct udevice *dev, unsigned long addr) > roundup((unsigned long)dst + phdr->p_filesz, > ARCH_DMA_MINALIGN) - > rounddown((unsigned long)dst, ARCH_DMA_MINALIGN)); > - ++phdr; > } > > return 0; >
On Wed, Sep 04, 2019 at 09:53:22AM +0200, Fabien Dessenne wrote: > 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> Applied to u-boot/master, thanks!
diff --git a/drivers/remoteproc/rproc-elf-loader.c b/drivers/remoteproc/rproc-elf-loader.c index 67937a7..23d502d 100644 --- a/drivers/remoteproc/rproc-elf-loader.c +++ b/drivers/remoteproc/rproc-elf-loader.c @@ -78,7 +78,7 @@ int rproc_elf32_load_image(struct udevice *dev, unsigned long addr) 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; @@ -99,7 +99,6 @@ int rproc_elf32_load_image(struct udevice *dev, unsigned long addr) roundup((unsigned long)dst + phdr->p_filesz, ARCH_DMA_MINALIGN) - rounddown((unsigned long)dst, ARCH_DMA_MINALIGN)); - ++phdr; } return 0;
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> --- drivers/remoteproc/rproc-elf-loader.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)