From: sashiko-bot@kernel.org
To: "Ben Levinsky" <ben.levinsky@amd.com>
Cc: wsa+renesas@sang-engineering.com, Frank.Li@kernel.org,
imx@lists.linux.dev
Subject: Re: [PATCH 4/4] remoteproc: switch drivers to optional resource-table helper
Date: Wed, 13 May 2026 02:48:36 +0000 [thread overview]
Message-ID: <20260513024837.6825EC2BCB0@smtp.kernel.org> (raw)
In-Reply-To: <20260511211841.284809-5-ben.levinsky@amd.com>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] Propagating errors from the `parse_fw` callback exposes a memory leak and list corruption in the remoteproc core's error handling.
- [Low] A `static inline` function is assigned directly to a function pointer across multiple compilation units.
- [Low] Implicit downgrade of the diagnostic log level for missing resource tables.
--
commit 4ae41a0f00b09b541655967f84eb5307e9228a6a
Author: Ben Levinsky <ben.levinsky@amd.com>
remoteproc: switch drivers to optional resource-table helper
This patch switches several remoteproc drivers to use the shared
rproc_elf_load_rsc_table_optional helper for parsing firmware.
This keeps missing resource tables non-fatal while allowing other
parsing errors to propagate to the caller.
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 6249815b54d88..5509048f7e192 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
[ ... ]
> @@ -777,7 +766,7 @@ static const struct rproc_ops imx_rproc_ops = {
> .kick = imx_rproc_kick,
> .da_to_va = imx_rproc_da_to_va,
> .load = rproc_elf_load_segments,
> - .parse_fw = imx_rproc_parse_fw,
> + .parse_fw = rproc_elf_load_rsc_table_optional,
Drivers like imx_rproc, stm32_rproc, and rcar_rproc allocate memory for
carveouts and coredump segments in their .prepare callbacks, appending
them to rproc->carveouts and rproc->dump_segments.
In rproc_fw_boot(), rproc_prepare_device() is called before
rproc_parse_fw(). Before this patch, the .parse_fw callbacks of these
drivers swallowed all errors, including -ENOMEM from
rproc_elf_load_rsc_table(), and unconditionally returned 0.
By switching to rproc_elf_load_rsc_table_optional(), failures like
-ENOMEM are now correctly propagated.
If rproc_parse_fw() returns an error, rproc_fw_boot() branches to the
unprepare_rproc label, which entirely skips the clean_up_resources block
and its call to rproc_resource_cleanup().
Because these drivers lack an .unprepare callback to manually free the
carveouts, the allocated memory is permanently leaked and the entries
remain on the rproc->carveouts list. Subsequent boot attempts will run
.prepare again, adding duplicate entries and leading to list corruption.
Does propagating errors from this callback expose a memory leak and list
corruption in the remoteproc core's error handling?
Also, rproc_elf_load_rsc_table_optional is defined as static inline in
a header file.
Taking the address of a static inline function to use as a callback
forces the compiler to generate a standalone, out-of-line copy of the
function in every referencing compilation unit.
Does assigning it directly to a function pointer across multiple drivers
cause unnecessary binary code duplication?
> .find_loaded_rsc_table = imx_rproc_elf_find_loaded_rsc_table,
> .get_loaded_rsc_table = imx_rproc_get_loaded_rsc_table,
> .sanity_check = rproc_elf_sanity_check,
[ ... ]
> diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c
> index 7ac8265b60ac7..007175dcd7afa 100644
> --- a/drivers/remoteproc/stm32_rproc.c
> +++ b/drivers/remoteproc/stm32_rproc.c
> @@ -232,14 +232,6 @@ static int stm32_rproc_prepare(struct rproc *rproc)
> }
> }
>
> -static int stm32_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw)
> -{
> - if (rproc_elf_load_rsc_table(rproc, fw))
> - dev_warn(&rproc->dev, "no resource table found for this firmware\n");
This isn't a bug, but prior to this change, drivers such as stm32_rproc
emitted a dev_warn, and others emitted dev_info when no resource table
was found.
The shared helper implicitly replaces these with a dev_dbg log level.
While this suppresses warnings for an optional component, it is an
undocumented side-effect that silently degrades observability for users
relying on kernel logs to verify firmware IPC configuration.
Could this change implicitly downgrade the diagnostic log level for
missing resource tables?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260511211841.284809-1-ben.levinsky@amd.com?part=4
prev parent reply other threads:[~2026-05-13 2:48 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-11 21:18 [PATCH 0/4] remoteproc: cleanup shared carveout and resource-table helpers Ben Levinsky
2026-05-11 21:18 ` [PATCH 1/4] remoteproc: add common wc-ioremap carveout callbacks Ben Levinsky
2026-05-12 9:44 ` Arnaud POULIQUEN
[not found] ` <DM4PR12MB64482037D67096393D4668CE83392@DM4PR12MB6448.namprd12.prod.outlook.com>
2026-05-12 17:15 ` Ben Levinsky
2026-05-11 21:18 ` [PATCH 2/4] remoteproc: switch exact-match drivers to wc-ioremap callbacks Ben Levinsky
2026-05-12 7:06 ` Geert Uytterhoeven
2026-05-13 1:33 ` sashiko-bot
2026-05-11 21:18 ` [PATCH 3/4] remoteproc: add helper for optional ELF resource tables Ben Levinsky
2026-05-12 7:55 ` Daniel Baluta
2026-05-12 9:22 ` Arnaud POULIQUEN
2026-05-12 14:53 ` Shah, Tanmay
[not found] ` <DM4PR12MB6448B1E51D58F3F8B11171F683392@DM4PR12MB6448.namprd12.prod.outlook.com>
2026-05-12 17:19 ` Ben Levinsky
2026-05-13 6:30 ` Daniel Baluta
2026-05-13 7:37 ` Arnaud POULIQUEN
2026-05-13 1:42 ` sashiko-bot
2026-05-11 21:18 ` [PATCH 4/4] remoteproc: switch drivers to optional resource-table helper Ben Levinsky
2026-05-12 7:07 ` Geert Uytterhoeven
2026-05-13 2:48 ` sashiko-bot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260513024837.6825EC2BCB0@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=ben.levinsky@amd.com \
--cc=imx@lists.linux.dev \
--cc=sashiko-reviews@lists.linux.dev \
--cc=wsa+renesas@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.