]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
driver core: Guard deferred probe timeout extension with delayed_work_pending()
authorDanilo Krummrich <dakr@kernel.org>
Mon, 25 May 2026 01:23:22 +0000 (03:23 +0200)
committerDanilo Krummrich <dakr@kernel.org>
Tue, 26 May 2026 14:51:08 +0000 (16:51 +0200)
commit557495bc879013c3d5e21d667e987e7ce3a514de
tree2d6c30b1cdbc42b309ec6851c8e796ac4185afdd
parentf9e6da99fe49277979798a1c3b9790ae10aaa18a
driver core: Guard deferred probe timeout extension with delayed_work_pending()

mod_delayed_work() unconditionally queues the work even when it wasn't
previously pending, which can fire the timeout prematurely or restart it
after it already fired. Add a delayed_work_pending() guard to restore
the originally intended semantics.

Premature firing calls fw_devlink_drivers_done() before all built-in
drivers have registered, causing fw_devlink to prematurely relax device
links for suppliers whose drivers haven't loaded yet.

Fixes: 1137838865bf ("driver core: Use mod_delayed_work to prevent lost deferred probe work")
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/20260525012340.3860581-2-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
drivers/base/dd.c