summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-02-16 16:41:21 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-02-16 17:08:02 +0100
commit673dafb9a86349a12a93151fd467625614dc7e12 (patch)
tree7d19862c2176d60e2eb4b28541c45c1beb0c7d7e
parentae462074fde3b50e1f077aafcac6c28b1700ae54 (diff)
downloadlinux-673dafb9a86349a12a93151fd467625614dc7e12.tar.gz
linux-673dafb9a86349a12a93151fd467625614dc7e12.tar.bz2
linux-673dafb9a86349a12a93151fd467625614dc7e12.zip
Revert "driver core: enforce device_lock for driver_match_device()"
This reverts commit adc1796eced46b48e23ec200a219d635f33a38ee which is commit dc23806a7c47ec5f1293aba407fb69519f976ee0 upstream. It causes boot regressions on some systems as all of the "fixes" for drivers are not properly backported yet. Once that is completed, only then can this be applied, if really necessary given the potential for explosions, perhaps we might want to wait a few -rc releases first... Cc: Danilo Krummrich <dakr@kernel.org> Cc: Rafael J. Wysocki (Intel) <rafael@kernel.org> Cc: Danilo Krummrich <dakr@kernel.org> Cc: Gui-Dong Han <hanguidong02@gmail.com> Cc: Qiu-ji Chen <chenqiuji666@gmail.com> Reported-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/7dfd0e63-a725-4fac-b2a0-f2e621d99d1b@sirena.org.uk Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/base/base.h9
-rw-r--r--drivers/base/bus.c2
-rw-r--r--drivers/base/dd.c2
3 files changed, 2 insertions, 11 deletions
diff --git a/drivers/base/base.h b/drivers/base/base.h
index 35e14bebbfb2..0b491449b022 100644
--- a/drivers/base/base.h
+++ b/drivers/base/base.h
@@ -165,18 +165,9 @@ void device_set_deferred_probe_reason(const struct device *dev, struct va_format
static inline int driver_match_device(struct device_driver *drv,
struct device *dev)
{
- device_lock_assert(dev);
-
return drv->bus->match ? drv->bus->match(dev, drv) : 1;
}
-static inline int driver_match_device_locked(struct device_driver *drv,
- struct device *dev)
-{
- guard(device)(dev);
- return driver_match_device(drv, dev);
-}
-
static inline void dev_sync_state(struct device *dev)
{
if (dev->bus->sync_state)
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 27f8442a3aa9..b97e13a52c33 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -263,7 +263,7 @@ static ssize_t bind_store(struct device_driver *drv, const char *buf,
int err = -ENODEV;
dev = bus_find_device_by_name(bus, NULL, buf);
- if (dev && driver_match_device_locked(drv, dev)) {
+ if (dev && driver_match_device(drv, dev)) {
err = device_driver_attach(drv, dev);
if (!err) {
/* success */
diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 07f1332dd3a4..7e2fb159bb89 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -1169,7 +1169,7 @@ static int __driver_attach(struct device *dev, void *data)
* is an error.
*/
- ret = driver_match_device_locked(drv, dev);
+ ret = driver_match_device(drv, dev);
if (ret == 0) {
/* no match */
return 0;