remoteproc: elf_loader: fix program header parsing
authorFabien Dessenne <fabien.dessenne@st.com>
Wed, 4 Sep 2019 07:53:22 +0000 (09:53 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 24 Jan 2020 16:19:52 +0000 (11:19 -0500)
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>
drivers/remoteproc/rproc-elf-loader.c

index 538481241f8e071c0dda6d70974dfbff56ff4417..d2345924452e4dbcfd915773381503c11bca6e61 100644 (file)
@@ -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;