Re: [PATCH] remoteproc: elf_loader: Update resource table name check

From: Srinivasa Rao Mandadapu
Date: Mon Dec 12 2022 - 09:29:08 EST



On 12/10/2022 8:36 AM, Peng Fan wrote:
Thanks for your time and valuable suggestion Pang!!!

On 12/1/2022 8:20 PM, Srinivasa Rao Mandadapu wrote:
Update resource table name check with sub string search instead of
complete string search.
In general Qualcomm binary contains, section header name
(e.g. .resource_table), amended with extra string to differentiate
with other sections.
So far Android adsp binaries are being authenticated using TZ,
hence this mismatch hasn't created any problem.
In recent developments, ADSP binary is being used in Chrome based
platforms, which doesn't have TZ path, hence resource table is
required for memory sandboxing.

Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@xxxxxxxxxxx>
---
  drivers/remoteproc/remoteproc_elf_loader.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/remoteproc/remoteproc_elf_loader.c b/drivers/remoteproc/remoteproc_elf_loader.c
index 5a412d7..0feb120 100644
--- a/drivers/remoteproc/remoteproc_elf_loader.c
+++ b/drivers/remoteproc/remoteproc_elf_loader.c
@@ -272,7 +272,7 @@ find_table(struct device *dev, const struct firmware *fw)
          u64 offset = elf_shdr_get_sh_offset(class, shdr);
          u32 name = elf_shdr_get_sh_name(class, shdr);
  -        if (strcmp(name_table + name, ".resource_table"))
+        if (!strstr(name_table + name, ".resource_table"))
              continue;

How about ?
    if (strcmp(name_table + name, ".resource_table")) {
        if (strstr(name_table + name, ".resource_table"))
              break;
        continue;
    }

It looks valid approach to me. But other reviewers may object on double check. Let's see Stephen Boyd comments also,

and handle it accordingly.


Regards,
Peng.
            table = (struct resource_table *)(elf_data + offset);