Description
In the Linux kernel, the following vulnerability has been resolved: can: mcp251x: fix deadlock in error path of mcp251x_open The mcp251x_open() function call free_irq() in its error path with the mpc_lock mutex held. But if an interrupt already occurred the interrupt handler will be waiting for the mpc_lock and free_irq() will deadlock waiting for the handler to finish. This issue is similar to the one fixed in commit 7dd9c26bd6cf ("can: mcp251x: fix deadlock if an interrupt occurs during mcp251x_open") but for the error path. To solve this issue move the call to free_irq() after the lock is released. Setting `priv->force_quit = 1` beforehand ensure that the IRQ handler will exit right away once it acquired the 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
bf66f3736a945dd4e92d86427276c6eeab0a6c1d to < 739454057572cb0948658d1142f3fa2c6966465caffectedbf66f3736a945dd4e92d86427276c6eeab0a6c1d to < 416c18ecddafab0ed09be1e7b9d2f448f3d4db16affectedbf66f3736a945dd4e92d86427276c6eeab0a6c1d to < 256f0cff6e946c570392bda1d01a65e789a7afd0affectedbf66f3736a945dd4e92d86427276c6eeab0a6c1d to < b73832292cd914e87a55e863ba4413a907e7db6baffectedbf66f3736a945dd4e92d86427276c6eeab0a6c1d to < 38063cc435b69d56e76f947c10d336fcb2953508affectedbf66f3736a945dd4e92d86427276c6eeab0a6c1d to < d27f12c3f5e85efc479896af4a69eccb37f75e8eaffectedbf66f3736a945dd4e92d86427276c6eeab0a6c1d to < e728f444c913a91d290d1824b4770780bbd6378eaffectedbf66f3736a945dd4e92d86427276c6eeab0a6c1d to < ab3f894de216f4a62adc3b57e9191888cbf26885affected
Linux Linux
Default version status: affected
2.6.34affected0 to < 2.6.34unaffected5.10.253 to ≤ 5.10.*unaffected5.15.203 to ≤ 5.15.*unaffected6.1.167 to ≤ 6.1.*unaffected6.6.130 to ≤ 6.6.*unaffected6.12.77 to ≤ 6.12.*unaffected6.18.17 to ≤ 6.18.*unaffected6.19.7 to ≤ 6.19.*unaffected7.0 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/739454057572cb0948658d1142f3fa2c6966465c ↗
- https://git.kernel.org/stable/c/416c18ecddafab0ed09be1e7b9d2f448f3d4db16 ↗
- https://git.kernel.org/stable/c/256f0cff6e946c570392bda1d01a65e789a7afd0 ↗
- https://git.kernel.org/stable/c/b73832292cd914e87a55e863ba4413a907e7db6b ↗
- https://git.kernel.org/stable/c/38063cc435b69d56e76f947c10d336fcb2953508 ↗
- https://git.kernel.org/stable/c/d27f12c3f5e85efc479896af4a69eccb37f75e8e ↗
- https://git.kernel.org/stable/c/e728f444c913a91d290d1824b4770780bbd6378e ↗
- https://git.kernel.org/stable/c/ab3f894de216f4a62adc3b57e9191888cbf26885 ↗
- https://cert-portal.siemens.com/productcert/html/ssa-784472.html ↗