From: sashiko-bot@kernel.org
To: "Elson Serrao" <elson.serrao@oss.qualcomm.com>
Cc: robh@kernel.org, devicetree@vger.kernel.org, conor+dt@kernel.org
Subject: Re: [PATCH v7 3/8] usb: misc: qcom_eud: add per-path High-Speed PHY control
Date: Mon, 31 Aug 2026 03:15:10 +0000 [thread overview]
Message-ID: <20260831031511.68B361F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260831030147.1500616-4-elson.serrao@oss.qualcomm.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Missing locking in sysfs store handlers leads to concurrent accesses that corrupt EUD state, unbalance PHY reference counts, and cause resource leaks.
--
commit 87088f50e77f42d71f8d902e8100685841983454
Author: Elson Serrao <elson.serrao@oss.qualcomm.com>
usb: misc: qcom_eud: add per-path High-Speed PHY control
This commit introduces per-path High-Speed PHY management for the EUD
hardware. It restructures the driver to dynamically initialize and power
the PHY associated with the currently selected active path.
> diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c
> index 25a6a8f110ec8..03d1c200658c8 100644
> --- a/drivers/usb/misc/qcom_eud.c
> +++ b/drivers/usb/misc/qcom_eud.c
[ ... ]
> @@ -130,6 +192,10 @@ static ssize_t port_store(struct device *dev, struct device_attribute *attr,
> if (port < 0)
> return port;
>
> + /* Check if the corresponding path is available */
> + if (!chip->paths[port])
> + return -EOPNOTSUPP;
> +
> /* Port selection must be done before enabling EUD */
> if (chip->enabled)
> return -EBUSY;
[Severity: High]
Does this locklessly check chip->enabled and subsequently modify chip->port_idx,
creating a race condition with concurrent writes to the enable attribute?
If a privileged user concurrently writes to both the enable and port sysfs
attributes, the following sequence appears possible:
Thread A executes enable_store(true), reads chip->enabled as false, and starts
enable_eud(). It successfully powers on the PHY for the current port (e.g.,
port 0).
Before Thread A sets chip->enabled to true, Thread B executes port_store(1).
Because chip->enabled is still false, Thread B bypasses the EBUSY check above
and changes chip->port_idx to 1.
When EUD is later disabled, disable_eud() will read the new chip->port_idx
and power off the PHY for port 1. This would cause a reference count underflow
on the uninitialized PHY for port 1, while leaving the PHY for port 0
permanently powered on, leaking the resource.
While later patches in this series might add a state lock to enable_store(),
port_store() appears to remain completely lockless, leaving this race unresolved.
Should port_store() also be synchronized against concurrent modifications?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260831030147.1500616-1-elson.serrao@oss.qualcomm.com?part=3
next prev parent reply other threads:[~2026-08-31 3:15 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 3:01 [PATCH v7 0/8] Improve Qualcomm EUD driver and platform support Elson Serrao
2026-08-31 3:01 ` [PATCH v7 1/8] dt-bindings: soc: qcom: eud: Add per-path child nodes for UTMI routing Elson Serrao
2026-08-31 3:09 ` sashiko-bot
2026-08-31 22:39 ` Bjorn Andersson
2026-08-31 3:01 ` [PATCH v7 2/8] usb: misc: qcom_eud: add sysfs attribute for port selection Elson Serrao
2026-08-31 3:12 ` sashiko-bot
2026-08-31 3:01 ` [PATCH v7 3/8] usb: misc: qcom_eud: add per-path High-Speed PHY control Elson Serrao
2026-08-31 3:15 ` sashiko-bot [this message]
2026-08-31 3:01 ` [PATCH v7 4/8] usb: misc: qcom_eud: add per-path role switch support Elson Serrao
2026-08-31 3:17 ` sashiko-bot
2026-08-31 3:01 ` [PATCH v7 5/8] usb: misc: qcom_eud: improve enable_store API Elson Serrao
2026-08-31 3:13 ` sashiko-bot
2026-08-31 3:01 ` [PATCH v7 6/8] usb: misc: qcom_eud: add role-based EUD control Elson Serrao
2026-08-31 3:13 ` sashiko-bot
2026-09-01 11:36 ` Konrad Dybcio
2026-09-10 1:37 ` Elson Serrao
2026-08-31 3:01 ` [PATCH v7 7/8] usb: misc: qcom_eud: fix virtual attach/detach event handling Elson Serrao
2026-08-31 3:17 ` sashiko-bot
2026-08-31 3:01 ` [PATCH v7 8/8] arm64: dts: qcom: kodiak: Desribe EUD UTMI routing and connector mapping Elson Serrao
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=20260831031511.68B361F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=elson.serrao@oss.qualcomm.com \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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.