diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-02-16 16:41:21 +0100 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-02-16 17:08:02 +0100 |
| commit | 673dafb9a86349a12a93151fd467625614dc7e12 (patch) | |
| tree | 7d19862c2176d60e2eb4b28541c45c1beb0c7d7e | |
| parent | ae462074fde3b50e1f077aafcac6c28b1700ae54 (diff) | |
| download | linux-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.h | 9 | ||||
| -rw-r--r-- | drivers/base/bus.c | 2 | ||||
| -rw-r--r-- | drivers/base/dd.c | 2 |
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; |
