Re: [PATCH v5] driver core: enforce device_lock for driver_match_device()

From: Jon Hunter

Date: Tue Jan 27 2026 - 10:09:44 EST



On 23/01/2026 19:07, Danilo Krummrich wrote:
On Fri Jan 23, 2026 at 7:53 PM CET, Gui-Dong Han wrote:
It seems the issue is simpler than a recursive registration deadlock.
Looking at the logs, tegra_qspi_probe triggers a NULL pointer
dereference (Oops) while holding the device_lock. The mutex likely
remains marked as held/orphaned, blocking subsequent driver bindings
on the same bus.

This likely explains why lockdep was silent. Since this is not a lock
dependency cycle or a recursive locking violation, but rather a lock
remaining held by a terminated task, lockdep would not flag it as a
deadlock pattern.

This is indeed a side effect of enforcing the lock here—it amplifies
the impact of a crash. However, an Oops while holding the device_lock
is generally catastrophic regardless.

This makes sense to me; it might indeed be as simple as that.

Yes I believe that this is the case too.

BTW, if I apply the SPI series from Breno [0], which fixes crash in the SPI driver, then everything works fine.

Jon

[0] https://lore.kernel.org/linux-tegra/20260126-tegra_xfer-v2-0-6d2115e4f387@xxxxxxxxxx/T/#t
--
nvpublic