In the Linux kernel, the following vulnerability has been resolved:
wifi: rtw88: use work to update rate to avoid RCU warning
The ieee80211ops::starcupdate must be atomic, because ieee80211chanbwchange() holds rcuread lock while calling drvstarcupdate(), so create a work to do original things.
Voluntary context switch within RCU read-side critical section! WARNING: CPU: 0 PID: 4621 at kernel/rcu/treeplugin.h:318 rcunotecontextswitch+0x571/0x5d0 CPU: 0 PID: 4621 Comm: kworker/u16:2 Tainted: G W OE Workqueue: phy3 ieee80211chswitchwork [mac80211] RIP: 0010:rcunotecontextswitch+0x571/0x5d0 Call Trace: <TASK> _schedule+0xb0/0x1460 ? _modtimer+0x116/0x360 schedule+0x5a/0xc0 scheduletimeout+0x87/0x150 ? tracerawoutputtickstop+0x60/0x60 waitforcompletiontimeout+0x7b/0x140 usbstartwaiturb+0x82/0x160 [usbcore usbcontrolmsg+0xe3/0x140 [usbcore rtwusbread+0x88/0xe0 [rtwusb rtwusbread8+0xf/0x10 [rtwusb rtwfwsendh2ccommand+0xa0/0x170 [rtwcore rtwfwsendrainfo+0xc9/0xf0 [rtwcore drvstarcupdate+0x7c/0x160 [mac80211 ieee80211chanbwchange+0xfb/0x110 [mac80211 ieee80211changechanctx+0x38/0x130 [mac80211 ieee80211vifusereservedswitch+0x34e/0x900 [mac80211 ieee80211linkusereservedcontext+0x88/0xe0 [mac80211 ieee80211chswitchwork+0x95/0x170 [mac80211 processonework+0x201/0x410 workerthread+0x4a/0x3b0 ? processonework+0x410/0x410 kthread+0xe1/0x110 ? kthreadcompleteandexit+0x20/0x20 retfrom_fork+0x1f/0x30 </TASK>
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/54xxx/CVE-2023-54071.json",
"cna_assigner": "Linux"
}