From: sashiko-bot@kernel.org
To: "Chen-Yu Tsai" <wenst@chromium.org>
Cc: conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v8 03/16] power: sequencing: Add pwrseq_get_state()
Date: Fri, 04 Sep 2026 08:57:01 +0000 [thread overview]
Message-ID: <20260904085701.A3FAE1F00A3D@smtp.kernel.org> (raw)
In-Reply-To: <20260904084158.1341550-4-wenst@chromium.org>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
New issues:
- [Low] Data race when reading desc->powered_on locklessly in pwrseq_get_state()
Pre-existing issues:
- [High] TOCTOU race in pwrseq_enable() and pwrseq_disable() causes permanent resource leak or WARN()
--
commit 5b89b7211c4aa2df354664ebde1b55a332d08712
Author: Chen-Yu Tsai <wenst@chromium.org>
Date: Fri Sep 4 08:41:42 2026 +0000
power: sequencing: Add pwrseq_get_state()
The power sequencing consumer API already does power on state tracking
internally. Expose the state to consumers through pwrseq_get_state()
so that they don't have to reimplement it locally.
> diff --git a/drivers/power/sequencing/core.c b/drivers/power/sequencing/core.c
> index 721e888b658d1..dbb2bd2f8864e 100644
> --- a/drivers/power/sequencing/core.c
> +++ b/drivers/power/sequencing/core.c
> @@ -968,6 +968,25 @@ int pwrseq_disable(struct pwrseq_desc *desc)
[Severity: High]
This is a pre-existing issue, but could the lockless checks of desc->powered_on
lead to a resource leak or a WARN() due to a TOCTOU race?
If a consumer calls pwrseq_enable() from two threads concurrently, could they
both bypass the lockless check:
drivers/power/sequencing/core.c:pwrseq_enable() {
...
if (!desc || desc->powered_on)
return 0;
...
}
and then both acquire state_lock and double-increment the provider unit's
enable_count?
A subsequent single pwrseq_disable() would then clear desc->powered_on:
drivers/power/sequencing/core.c:pwrseq_disable() {
...
if (!desc || !desc->powered_on)
return 0;
...
}
causing future disables to return early locklessly. Would this leave the
unit's enable_count permanently elevated?
Additionally, if pwrseq_disable() races with the lockless post_enable() error
rollback path, could it trigger the WARN(1) in pwrseq_unit_disable() due to
underflowing enable_count?
> }
> EXPORT_SYMBOL_GPL(pwrseq_disable);
>
> +/**
> + * pwrseq_get_state() - Queries the last requested state of the power sequencer.
[ ... ]
> +int pwrseq_get_state(struct pwrseq_desc *desc)
> +{
> + if (!desc)
> + return -EINVAL;
> +
> + return desc->powered_on ? PWRSEQ_STATE_ON : PWRSEQ_STATE_OFF;
[Severity: Low]
Does this lockless read of a state variable that is concurrently modified by
writers without READ_ONCE() cause a data race?
Since pwrseq_get_state() can be called concurrently with pwrseq_enable() or
pwrseq_disable(), kernel concurrency rules generally require READ_ONCE() for
lockless reads of shared variables to prevent compiler optimization issues.
> +}
> +EXPORT_SYMBOL_GPL(pwrseq_get_state);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260904084158.1341550-1-wenst@chromium.org?part=3
next prev parent reply other threads:[~2026-09-04 8:57 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 8:41 [PATCH v8 00/16] arm64: mediatek: Add M.2 E-key slot on Chromebooks Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 01/16] device property: Add fwnode_graph_get_port_by_id() Chen-Yu Tsai
2026-09-04 8:54 ` sashiko-bot
2026-09-04 20:18 ` Sakari Ailus
2026-09-04 8:41 ` [PATCH v8 02/16] device property: Add fwnode_graph_get_next_port_endpoint() Chen-Yu Tsai
2026-09-04 20:22 ` Sakari Ailus
2026-09-04 8:41 ` [PATCH v8 03/16] power: sequencing: Add pwrseq_get_state() Chen-Yu Tsai
2026-09-04 8:57 ` sashiko-bot [this message]
2026-09-04 8:41 ` [PATCH v8 04/16] usb: hub: Use assign_bit() in usb_hub_set_port_power() Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 05/16] usb: hub: Return actual error from hub_configure() in hub_probe() Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 06/16] usb: hub: Associate port@ fwnode with USB port device Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 07/16] usb: core: Move struct usb_port and related APIs to port.h Chen-Yu Tsai
2026-09-04 16:40 ` Alan Stern
2026-09-04 16:44 ` Greg Kroah-Hartman
2026-09-04 17:24 ` Chen-Yu Tsai
2026-09-04 17:52 ` Greg Kroah-Hartman
2026-09-05 8:19 ` Andy Shevchenko
2026-09-05 11:30 ` Greg Kroah-Hartman
2026-09-07 9:11 ` Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 08/16] usb: hub: Pass |struct usb_port*| to usb_port_is_power_on() Chen-Yu Tsai
2026-09-04 16:44 ` Alan Stern
2026-09-04 8:41 ` [PATCH v8 09/16] usb: hub: Use usb_hub_set_port_power() to control port power everywhere Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 10/16] usb: hub: Power on connected M.2 E-key connectors with power sequencing API Chen-Yu Tsai
2026-09-04 9:10 ` sashiko-bot
2026-09-04 8:41 ` [PATCH v8 11/16] dt-bindings: usb: mediatek,mtk-xhci: Switch to ports for USB connections Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 12/16] power: sequencing: pcie-m2: support matching on remote "port" node Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 13/16] power: sequencing: pcie-m2: Add usb and sdio targets for E-key connector Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 14/16] power: sequencing: pcie-m2: Split Bluetooth unit based on interface Chen-Yu Tsai
2026-09-04 9:08 ` sashiko-bot
2026-09-04 8:41 ` [PATCH v8 15/16] arm64: dts: mediatek: mt8195-cherry: Add M.2 E-key slot Chen-Yu Tsai
2026-09-04 8:41 ` [PATCH v8 16/16] arm64: dts: mediatek: mt8188-geralt: Add WiFi/BT as " Chen-Yu Tsai
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=20260904085701.A3FAE1F00A3D@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=wenst@chromium.org \
/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.