CVE-2023-53577: bpf, cpumap: Make sure kthread is running before map update returns
In the Linux kernel, the following vulnerability has been resolved:
bpf, cpumap: Make sure kthread is running before map update returns
The following warning was reported when running stress-mode enabled xdpredirectcpu with some RT threads:
------------[ cut here ]------------ WARNING: CPU: 4 PID: 65 at kernel/bpf/cpumap.c:135 CPU: 4 PID: 65 Comm: kworker/4:1 Not tainted 6.5.0-rc2+ #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) Workqueue: events cpumapkthreadstop RIP: 0010:putcpumapentry+0xda/0x220 ...... Call Trace: <TASK> ? showregs+0x65/0x70 ? warn+0xa5/0x240 ...... ? putcpumapentry+0xda/0x220 cpumapkthreadstop+0x41/0x60 processonework+0x6b0/0xb80 workerthread+0x96/0x720 kthread+0x1a5/0x1f0 retfromfork+0x3a/0x70 retfromforkasm+0x1b/0x30 </TASK>
The root cause is the same as commit 436901649731 ("bpf: cpumap: Fix memory leak in cpumapupdateelem"). The kthread is stopped prematurely by kthreadstop() in cpumapkthreadstop(), and kthread() doesn't call cpumapkthreadrun() at all but XDP program has already queued some frames or skbs into ptrring. So when cpumapringcleanup() checks the ptrring, it will find it was not emptied and report a warning.
An alternative fix is to use cpumapringcleanup() to drop these pending frames or skbs when kthreadstop() returns -EINTR, but it may confuse the user, because these frames or skbs have been handled correctly by XDP program. So instead of dropping these frames or skbs, just make sure the per-cpu kthread is running before cpumapentryalloc() returns.
After apply the fix, the error handle for kthreadstop() will be unnecessary because it will always return 0, so just remove it.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2023-53577?
CVE-2023-53577 has been rated as a moderate severity vulnerability affecting the Linux kernel.
How do I fix CVE-2023-53577?
To fix CVE-2023-53577, you should update your Linux kernel to the latest version that addresses this vulnerability.
What systems are affected by CVE-2023-53577?
CVE-2023-53577 affects systems running the Linux kernel where BPF cpumap features are utilized.
What are the potential impacts of CVE-2023-53577?
The potential impacts of CVE-2023-53577 include undefined behavior and stability issues when running specific thread configurations.
Is there a workaround for CVE-2023-53577?
Currently, there are no widely recommended workarounds for CVE-2023-53577, and updating the kernel is the best mitigation.