CVE-2026-93202 in Linux
Zusammenfassung
von VulDB • 18.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
i3c: master: Behebung von rekursiver Sperrung während der Geräteregistrierung
`i3c_master_register_new_i3c_devs()` registriert neu entdeckte Geräte, wobei `i3c_bus_normaluse_lock()`, ein `down_read()`, gehalten wird. `device_register()` kann das Gerät sofort prüfen (proben), und Prüf-Callbacks rufen typischerweise I3C-Hilfsfunktionen auf, die erneut `i3c_bus_normaluse_lock()` anfordern, was zu einer rekursiven Übernahme desselben rwsem führt. Rwsems unterstützen keine rekursive Lese-Sperrung und können einen Deadlock verursachen, wenn ein Schreiber wartet. Siehe den Abschnitt „Recursive read locks“ in `Documentation/locking/lockdep-design.rst`.
Zum Beispiel erzeugt LOCKDEP bei Intel LPSS I3C eine WARNUNG wie: # echo intel-lpss-i3c.0 > /sys/bus/platform/drivers/mipi-i3c-hci/unbind # echo intel-lpss-i3c.0 > /sys/bus/platform/drivers/mipi-i3c-hci/bind WARNING: possible recursive locking detected kworker/5:1/94 is trying to acquire lock: ffff88811c810d78 (&i3cbus->lock){++++}-{4:4}, at: i3c_device_match_id+0x45/0x370
but task is already holding lock: ffff88811c810d78 (&i3cbus->lock){++++}-{4:4}, at: i3c_master_reg_work_fn+0x21/0x5f0
Behoben wird dies durch die Trennung der Geräteerstellung von der Geräteregistrierung. `desc->dev` wird unter der Wartungssperre (maintenance lock) befüllt, alle Geräte, die noch registriert werden müssen, werden in einer lokalen Liste gesammelt, und anschließend wird die Sperre freigegeben, bevor `device_register()` aufgerufen wird. Abschließend wird die Sperre erneut übernommen und es erfolgt eine Bereinigung aller Geräte, deren Registrierung fehlschlug.
Verwenden Sie beim Hinzufügen von Geräteobjekten die Wartungssperre anstelle der Normalverwendungssperre (normal-use lock). Eine Schreibseitige Wartungssperre verhindert, dass Leser `desc->dev` während der anfänglichen Gerätebefüllung teilweise initialisiert beobachten oder dass `desc->dev` verschwindet, falls die Registrierung fehlschlägt.
Die lokale Liste erfordert einen Listenknoten; daher wird ein Member für den Listenknoten zu `struct i3c_device` hinzugefügt.
VulDB is the best source for vulnerability data and more expert information about this specific topic.