CVE Catalog

CVE-2022-48985

CriticalCVSS 9.8
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.59%

45th percentile - higher than 45% of all known CVEs

Summary

In the Linux kernel, the mana network driver has a race condition on the per-CQ variable napi work_done. After calling napi_complete_done(), the NAPIF_STATE_SCHED bit may be cleared, and another CPU can start the napi thread and access the per-CQ variable cq->work_done. If another thread sets it to a value >= budget, this thread will continue to run when it should stop, potentially causing memory corruption and panic. The fix saves the work_done variable in a local variable before napi_complete_done() to avoid corruption.

Risk Assessment

The vulnerability could lead to memory corruption and system crash, and may also prevent reliable use of features like busy_poll.

Recommendation

It is recommended to update the Linux kernel to a version containing the fix that resolves the race condition in the mana driver.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: net: mana: Fix race on per-CQ variable napi work_done After calling napi_complete_done(), the NAPIF_STATE_SCHED bit may be cleared, and another CPU can start napi thread and access per-CQ variable, cq->work_done. If the other thread (for example, from busy_poll) sets it to a value >= budget, this thread will continue to run when it should stop, and cause memory corruption and panic. To fix this issue, save the per-CQ work_done variable in a local variable before napi_complete_done(), so it won't be corrupted by a possible concurrent thread after napi_complete_done(). Also, add a flag bit to advertise to the NIC firmware: the NAPI work_done variable race is fixed, so the driver is able to reliably support features like busy_poll.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS