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