From: "Danilo Krummrich" <dakr@kernel.org>
To: "Ulf Hansson" <ulf.hansson@linaro.org>
Cc: "Saravana Kannan" <saravanak@kernel.org>,
"Rafael J . Wysocki" <rafael@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
<linux-pm@vger.kernel.org>,
"Sudeep Holla" <sudeep.holla@kernel.org>,
"Cristian Marussi" <cristian.marussi@arm.com>,
"Kevin Hilman" <khilman@baylibre.com>,
"Stephen Boyd" <sboyd@kernel.org>,
"Marek Szyprowski" <m.szyprowski@samsung.com>,
"Bjorn Andersson" <andersson@kernel.org>,
"Abel Vesa" <abel.vesa@oss.qualcomm.com>,
"Peng Fan" <peng.fan@oss.nxp.com>,
"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
"Maulik Shah" <maulik.shah@oss.qualcomm.com>,
"Konrad Dybcio" <konradybcio@kernel.org>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Jonathan Hunter" <jonathanh@nvidia.com>,
"Geert Uytterhoeven" <geert@linux-m68k.org>,
"Dmitry Baryshkov" <dmitry.baryshkov@oss.qualcomm.com>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>,
"Geert Uytterhoeven" <geert+renesas@glider.be>,
<driver-core@lists.linux.dev>
Subject: Re: [PATCH v2 1/9] driver core: Enable suppliers to implement fine grained sync_state support
Date: Wed, 22 Apr 2026 12:59:50 +0200 [thread overview]
Message-ID: <DHZMQLCIRJIS.174HZR6DIAOMM@kernel.org> (raw)
In-Reply-To: <CAPDyKFqMDPiqvqJrq5Qs6Tw4Sc7szG4G-=y0NFkNSPoNd9kdVA@mail.gmail.com>
On Wed Apr 22, 2026 at 12:07 PM CEST, Ulf Hansson wrote:
> On Sat, 18 Apr 2026 at 13:23, Danilo Krummrich <dakr@kernel.org> wrote:
>> On Fri Apr 10, 2026 at 12:40 PM CEST, Ulf Hansson wrote:
>> > @@ -1126,6 +1128,9 @@ static void __device_links_queue_sync_state(struct device *dev,
>> > if (dev->state_synced)
>> > return;
>> >
>> > + if (dev->driver && dev->driver->queue_sync_state)
>> > + dev->driver->queue_sync_state(dev);
>>
>> This seems to be called without the device lock being held, which seems to allow
>> the queue_sync_state() callback to execute concurrently with remove(). This
>> opens the door for all kinds of UAF conditions in drivers.
>
> If that were the case, this whole function would be unsafe even before
> this change. I assume this isn't because of how the function is being
> called, but I may be wrong.
This function does not issue any driver callbacks intentionally; the existing
sync_state() callback is deferred to device_links_flush_sync_list(), which is
called without the device_links_write_lock() held, but takes the device_lock()
to protect against other concurrent driver callbacks, such as remove().
I.e. we can't take the device_lock() when the device_links_write_lock() is held,
as it would be prone to lock inversion.
The documentation of __device_links_queue_sync_state() actually slightly hints
at this, but focuses more on the other reason for the deferred semantics -- the
sync_state() callback may want to call device link APIs.
> Anyway, let me add a get/put_device() here somewhere, to ensure we
> prevent this from happening. I assume that is what you are proposing?
No, an additional device reference count won't protect against other concurrent
driver callbacks, such as remove().
next prev parent reply other threads:[~2026-04-22 10:59 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-10 10:40 [PATCH v2 0/9] driver core / pmdomain: Add support for fined grained sync_state Ulf Hansson
2026-04-10 10:40 ` [PATCH v2 1/9] driver core: Enable suppliers to implement fine grained sync_state support Ulf Hansson
2026-04-18 11:23 ` Danilo Krummrich
2026-04-22 10:07 ` Ulf Hansson
2026-04-22 10:59 ` Danilo Krummrich [this message]
2026-05-05 11:12 ` Ulf Hansson
2026-05-05 12:46 ` Danilo Krummrich
2026-05-05 14:15 ` Ulf Hansson
2026-04-10 10:40 ` [PATCH v2 2/9] driver core: Add dev_set_drv_queue_sync_state() Ulf Hansson
2026-04-18 11:23 ` Danilo Krummrich
2026-04-22 10:25 ` Ulf Hansson
2026-04-22 11:30 ` Danilo Krummrich
2026-04-10 10:40 ` [PATCH v2 3/9] pmdomain: core: Move genpd_get_from_provider() Ulf Hansson
2026-04-10 10:40 ` [PATCH v2 4/9] pmdomain: core: Add initial fine grained sync_state support Ulf Hansson
2026-04-20 8:49 ` Geert Uytterhoeven
2026-04-10 10:40 ` [PATCH v2 5/9] pmdomain: core: Extend fine grained sync_state to more onecell providers Ulf Hansson
2026-04-10 10:40 ` [PATCH v2 6/9] pmdomain: core: Export a common function for ->queue_sync_state() Ulf Hansson
2026-04-10 10:40 ` [PATCH v2 7/9] pmdomain: renesas: rcar-gen4-sysc: Drop GENPD_FLAG_NO_STAY_ON Ulf Hansson
2026-04-10 10:40 ` [PATCH v2 8/9] pmdomain: renesas: rcar-sysc: " Ulf Hansson
2026-04-10 10:40 ` [PATCH v2 9/9] pmdomain: renesas: rmobile-sysc: " Ulf Hansson
2026-04-16 9:15 ` [PATCH v2 0/9] driver core / pmdomain: Add support for fined grained sync_state Geert Uytterhoeven
2026-04-16 9:42 ` Ulf Hansson
2026-04-17 11:27 ` Ulf Hansson
2026-04-18 11:23 ` Danilo Krummrich
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=DHZMQLCIRJIS.174HZR6DIAOMM@kernel.org \
--to=dakr@kernel.org \
--cc=abel.vesa@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=cristian.marussi@arm.com \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=driver-core@lists.linux.dev \
--cc=geert+renesas@glider.be \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=jonathanh@nvidia.com \
--cc=khilman@baylibre.com \
--cc=konradybcio@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=maulik.shah@oss.qualcomm.com \
--cc=peng.fan@oss.nxp.com \
--cc=rafael@kernel.org \
--cc=saravanak@kernel.org \
--cc=sboyd@kernel.org \
--cc=sudeep.holla@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=tomi.valkeinen@ideasonboard.com \
--cc=ulf.hansson@linaro.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.