remoteproc: elf_loader: skip segment with memsz as zero
authorPeng Fan <peng.fan@nxp.com>
Wed, 13 Apr 2022 03:30:37 +0000 (11:30 +0800)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Wed, 13 Apr 2022 17:14:03 +0000 (11:14 -0600)
Per elf specification,
p_filesz: This member gives the number of bytes in the file image of
the segment; it may be zero.
p_memsz: This member gives the number of bytes in the memory image
of the segment; it may be zero.

There is a case that i.MX DSP firmware has segment with PT_LOAD and
p_memsz/p_filesz set to zero. Such segment needs to be ignored,
otherwize rproc_da_to_va would report error.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Link: https://lore.kernel.org/r/20220413033038.1715945-2-peng.fan@oss.nxp.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/remoteproc/remoteproc_elf_loader.c

index d635d19..5a412d7 100644 (file)
@@ -181,7 +181,7 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw)
                bool is_iomem = false;
                void *ptr;
 
-               if (type != PT_LOAD)
+               if (type != PT_LOAD || !memsz)
                        continue;
 
                dev_dbg(dev, "phdr: type %d da 0x%llx memsz 0x%llx filesz 0x%llx\n",