Description
In the Linux kernel, the following vulnerability has been resolved: drivers: usb: host: Fix deadlock in oxu_bus_suspend() There is a deadlock in oxu_bus_suspend(), which is shown below: (Thread 1) | (Thread 2) | timer_action() oxu_bus_suspend() | mod_timer() spin_lock_irq() //(1) | (wait a time) ... | oxu_watchdog() del_timer_sync() | spin_lock_irq() //(2) (wait timer to stop) | ... We hold oxu->lock in position (1) of thread 1, and use del_timer_sync() to wait timer to stop, but timer handler also need oxu->lock in position (2) of thread 2. As a result, oxu_bus_suspend() will block forever. This patch extracts del_timer_sync() from the protection of spin_lock_irq(), which could let timer handler to obtain the needed lock.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
b92a78e582b1a45649143dc86e526f5824092478 to < 9b58d255f27b0ed6a2e43208960864d67579db58affectedb92a78e582b1a45649143dc86e526f5824092478 to < a3d380188bde8900c3f604e82b56572896499124affectedb92a78e582b1a45649143dc86e526f5824092478 to < f8242044c91cafbba9e320b0fb31abf2429a3221affectedb92a78e582b1a45649143dc86e526f5824092478 to < 2dcec0bc142be2096af71a5703d63237127db204affectedb92a78e582b1a45649143dc86e526f5824092478 to < ffe9440d698274c6462d2e304562c6ddfc8c84dfaffectedb92a78e582b1a45649143dc86e526f5824092478 to < d888753872190abd18f68a7d77b9c7c367f0a7abaffectedb92a78e582b1a45649143dc86e526f5824092478 to < 4187b291a76664a3c03d3f0d9bfadc8322881868affectedb92a78e582b1a45649143dc86e526f5824092478 to < b97aae8b43b718314012e8170b7e03dbfd2e7677affectedb92a78e582b1a45649143dc86e526f5824092478 to < 4d378f2ae58138d4c55684e1d274e7dd94aa6524affected
Linux Linux
Default version status: affected
2.6.29affected0 to < 2.6.29unaffected4.9.318 to ≤ 4.9.*unaffected4.14.283 to ≤ 4.14.*unaffected4.19.247 to ≤ 4.19.*unaffected5.4.198 to ≤ 5.4.*unaffected5.10.122 to ≤ 5.10.*unaffected5.15.47 to ≤ 5.15.*unaffected5.17.15 to ≤ 5.17.*unaffected5.18.4 to ≤ 5.18.*unaffected5.19 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/9b58d255f27b0ed6a2e43208960864d67579db58 ↗
- https://git.kernel.org/stable/c/a3d380188bde8900c3f604e82b56572896499124 ↗
- https://git.kernel.org/stable/c/f8242044c91cafbba9e320b0fb31abf2429a3221 ↗
- https://git.kernel.org/stable/c/2dcec0bc142be2096af71a5703d63237127db204 ↗
- https://git.kernel.org/stable/c/ffe9440d698274c6462d2e304562c6ddfc8c84df ↗
- https://git.kernel.org/stable/c/d888753872190abd18f68a7d77b9c7c367f0a7ab ↗
- https://git.kernel.org/stable/c/4187b291a76664a3c03d3f0d9bfadc8322881868 ↗
- https://git.kernel.org/stable/c/b97aae8b43b718314012e8170b7e03dbfd2e7677 ↗
- https://git.kernel.org/stable/c/4d378f2ae58138d4c55684e1d274e7dd94aa6524 ↗