From: sashiko-bot@kernel.org
To: "Xianwei Zhao" <xianwei.zhao@amlogic.com>
Cc: linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org
Subject: Re: [PATCH] pmdomain: amlogic: Keep Amlogic A9 ETH domain always on
Date: Mon, 14 Sep 2026 09:08:42 +0000 [thread overview]
Message-ID: <20260914090842.B3A8F1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260914-a9-pwr-eth-v1-1-752005131135@amlogic.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [Critical] The driver ignores the return value of `pm_genpd_init()`, which causes a critical Use-After-Free during system boot if initialization fails.
--
commit e3b7d61b7b7e8838767d2093bcc10638ec8bbd84
Author: Qingpeng Yang <qingpeng.yang@amlogic.com>
pmdomain: amlogic: Keep Amlogic A9 ETH domain always on
This commit marks the Amlogic A9 ethernet power domain as always-on.
The change is intended to ensure the domain remains powered to support
ethernet online wakeup functionality.
> diff --git a/drivers/pmdomain/amlogic/meson-secure-pwrc.c b/drivers/pmdomain/amlogic/meson-secure-pwrc.c
> index 133549956efa4..daf09cf86335b 100644
> --- a/drivers/pmdomain/amlogic/meson-secure-pwrc.c
> +++ b/drivers/pmdomain/amlogic/meson-secure-pwrc.c
> @@ -196,7 +196,8 @@ static const struct meson_secure_pwrc_domain_desc a9_pwrc_domains[] = {
> SEC_PD(A9_VICP, 0),
> SEC_PD(A9_SD_EMMC_A, 0),
> SEC_PD(A9_SD_EMMC_B, 0),
> - SEC_PD(A9_ETH, 0),
> + /* ETH is for ethernet online wakeup, and should be always on */
> + SEC_PD(A9_ETH, GENPD_FLAG_ALWAYS_ON),
[Severity: Critical]
This is a pre-existing issue, but does adding GENPD_FLAG_ALWAYS_ON here risk
a use-after-free during system boot if the ethernet domain fails to power on?
If the A9_ETH hardware state is off and the underlying firmware call fails to
power it on, pm_genpd_init() returns -EINVAL because it strictly enforces the
always-on constraint:
drivers/pmdomain/core.c:pm_genpd_init() {
...
/* Always-on domains must be powered on at initialization. */
if ((genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd)) &&
!genpd_status_on(genpd)) {
pr_err("always-on PM domain %s is not on\n", genpd->name);
return -EINVAL;
}
...
}
The probe function in the Amlogic secure power controller driver currently
ignores the return value of pm_genpd_init(), leaving the failed domain
uninitialized and out of the global gpd_list:
drivers/pmdomain/amlogic/meson-secure-pwrc.c:meson_secure_pwrc_probe() {
...
for (i = 0; i < match->count; i++) {
...
pm_genpd_init(&dom->base, NULL, match->domains[i].is_off(dom));
pwrc->xlate.domains[i] = &dom->base;
}
...
}
When the probe function later calls of_genpd_add_provider_onecell(), it
detects that the failed domain is missing from gpd_list and aborts provider
registration.
The probe failure then triggers devres cleanup, which frees the devm_kcalloc
allocated pwrc->domains array. However, the previously successfully initialized
domains (such as A9_DSPA) are never removed from the global gpd_list.
Later, when genpd_power_off_unused() iterates over gpd_list during the late
initcalls, won't it dereference the freed memory from the pwrc->domains array?
> SEC_PD(A9_PCIE_A, 0),
> SEC_PD(A9_PCIE_B, 0),
> SEC_PD(A9_NNA_4T, 0),
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260914-a9-pwr-eth-v1-1-752005131135@amlogic.com?part=1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
next prev parent reply other threads:[~2026-09-14 9:08 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-14 8:56 [PATCH] pmdomain: amlogic: Keep Amlogic A9 ETH domain always on Xianwei Zhao via B4 Relay
2026-09-14 8:56 ` Xianwei Zhao via B4 Relay
2026-09-14 8:56 ` Xianwei Zhao
2026-09-14 9:08 ` sashiko-bot [this message]
2026-09-14 10:40 ` Martin Blumenstingl
2026-09-14 10:40 ` Martin Blumenstingl
2026-09-15 15:47 ` Ulf Hansson
2026-09-15 15:47 ` Ulf Hansson
2026-09-22 9:04 ` Qingpeng Yang
2026-09-22 9:04 ` Qingpeng Yang
2026-09-22 8:44 ` Qingpeng Yang
2026-09-22 8:44 ` Qingpeng Yang
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=20260914090842.B3A8F1F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-amlogic@lists.infradead.org \
--cc=neil.armstrong@linaro.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=xianwei.zhao@amlogic.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.