In the Linux kernel, the following vulnerability has been resolved:
bus: mhi: host: Fix race between unprepare and queue_buf
A client driver may use mhi_unprepare_from_transfer() to quiesce incoming data during the client driver's tear down. The client driver might also be processing data at the same time, resulting in a call to mhi_queue_buf() which will invoke mhi_gen_tre(). If mhi_gen_tre() runs after mhi_unprepare_from_transfer() has torn down the channel, a panic will occur due to an invalid dereference leading to a page fault.
This occurs because mhi_gen_tre() does not verify the channel state after locking it. Fix this by having mhi_gen_tre() confirm the channel state is valid, or return error to avoid accessing deinitialized data.
[mani: added stable tag]
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 5.15.149 | 5.15.181 |
| linux / linux_kernel | 6.1.76 | 6.1.135 |
| linux / linux_kernel | 6.6.15 | 6.6.88 |
| linux / linux_kernel | 6.7.3 | 6.12.24 |
| linux / linux_kernel | 6.13 | 6.13.12 |
| linux / linux_kernel | 6.14 | 6.14.3 |
| debian / debian_linux | 11.0 | 11.0.x |