From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Mario Peter <mario.peter@leica-geosystems.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Danilo Krummrich <dakr@kernel.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Alan Stern <stern@rowland.harvard.edu>,
driver-core@lists.linux.dev, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1] driver core: Take parent lock in async device attach
Date: Tue, 6 Oct 2026 16:38:26 +0200 [thread overview]
Message-ID: <2026100658-stoic-unread-22c6@gregkh> (raw)
In-Reply-To: <20261006132335.4014316-1-mario.peter@leica-geosystems.com>
On Tue, Oct 06, 2026 at 01:23:35PM +0000, Mario Peter wrote:
> On buses with need_parent_lock set (only USB), probe() must run with the
> parent device locked. A synchronous attach after device_add() gets this
> from the caller, e.g. usb_set_configuration() holds the udev lock while
> adding interfaces. __device_attach_async_helper() runs the probe from an
> async worker instead, where that lock isn't held, and only takes
> device_lock(dev).
>
> With async probing enabled for USB drivers (driver_async_probe=*,
> module.async_probe=1), hub_probe() of a multi-TT hub then races with
> usb_set_configuration() and both create the interface's endpoint
> devices. On an i.MX8MM board this hit 11 of 100 boots:
>
> sysfs: cannot create duplicate filename '.../1-1/1-1:1.0/ep_81'
> Call trace:
> sysfs_warn_dup
> usb_create_ep_devs
> create_intf_ep_devs
> usb_set_interface
> hub_probe
> usb_probe_interface
> really_probe
> __device_attach_async_helper
> async_run_entry_fn
>
> Take the parent lock there as well, like __driver_attach_async_helper()
> does, and move __device_driver_lock/unlock() up for that. With this the
> warning was gone in 300 boots.
>
> Fixes: 765230b5f084 ("driver-core: add asynchronous probing support for drivers")
> Assisted-by: LLM
> Signed-off-by: Mario Peter <mario.peter@leica-geosystems.com>
> ---
> Seen and tested on 6.16.y, which has the same code here. On mainline
> only build-tested.
Please verify this on the latest tree, 6.16.y is _VERY_ old and
obsolete, lots has changed in the year it was released.
> Not covered: deferred_probe_work_func() also re-probes via
> __device_attach() without the parent lock.
>
> Analysis and patch done with the help of Claude Code.
This feels really wrong, what bus is the host controller on for these?
thanks,
greg k-h
next prev parent reply other threads:[~2026-10-06 15:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-06 13:23 [PATCH v1] driver core: Take parent lock in async device attach Mario Peter
2026-10-06 14:38 ` Greg Kroah-Hartman [this message]
2026-10-06 15:29 ` PETER Mario
2026-10-06 20:45 ` Alan Stern
2026-10-07 12:47 ` PETER Mario
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=2026100658-stoic-unread-22c6@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=dakr@kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=driver-core@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mario.peter@leica-geosystems.com \
--cc=rafael@kernel.org \
--cc=stern@rowland.harvard.edu \
/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.