In the Linux kernel, the following vulnerability has been resolved:
ieee802154/adf7242: defer destroy_workqueue call
There is a possible race condition (use-after-free) like below
(FREE) | (USE) adf7242_remove | adf7242_channel cancel_delayed_work_sync | destroy_workqueue (1) | adf7242_cmd_rx | mod_delayed_work (2) |
The root cause for this race is that the upper layer (ieee802154) is unaware of this detaching event and the function adf7242_channel can be called without any checks.
To fix this, we can add a flag write at the beginning of adf7242_remove and add flag check in adf7242_channel. Or we can just defer the destructive operation like other commit 3e0588c291d6 ("hamradio: defer ax25 kfree after unregister_netdev") which let the ieee802154_unregister_hw() to handle the synchronization. This patch takes the second option.
runs")
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 4.17.19 | 4.18 |
| linux / linux_kernel | 4.18.1 | 4.19.258 |
| linux / linux_kernel | 4.20 | 5.4.213 |
| linux / linux_kernel | 5.5 | 5.10.142 |
| linux / linux_kernel | 5.11 | 5.15.66 |
| linux / linux_kernel | 5.16 | 5.19.8 |
| linux / linux_kernel | 4.18 | 4.18.x |
| linux / linux_kernel | 4.18-rc6 | 4.18-rc6.x |
| linux / linux_kernel | 4.18-rc7 | 4.18-rc7.x |
| linux / linux_kernel | 4.18-rc8 | 4.18-rc8.x |
| linux / linux_kernel | 6.0-rc1 | 6.0-rc1.x |
| linux / linux_kernel | 6.0-rc2 | 6.0-rc2.x |
| linux / linux_kernel | 6.0-rc3 | 6.0-rc3.x |