perf/core: Allow list_del during perf_event_overflow()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.160, 6.12.111, 6.18.53, 7.2.7
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: perf/core: Allow list_del during perf_event_overflow() A PMU might use perf_sched_cb_inc() and perf_sched_cb_dec() interface to get the PMU call back function pmu::sched_task invoked at schedule in and schedule out. This is achieved by walking along the list anchored by sched_cb_list. The following scenario might lead to a list corruption. perf_pmu_sched_task() for_each_list_entry(..., &sched_cb_list) +--> __perf_pmu_sched_task() +--> event->pmu->sched_task()) +--> PMU_push_sample() +--> perf_event_overflow() +--> __perf_event_overflow() +--> pmu->stop() +--> perf_sched_cb_dec() remove entry from sched_cb_list while list node in use. This happens when ioctl(fd, PERF_EVENT_IOC_REFRESH, xxx) has been invoked and perf_event::event_limit hits zero. Prevent the list corruption and convert for_each_list_entry() to for_each_list_entry_safe().
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From bd27568117664b8b3e259721393df420ed51f57b · fixed in fa360a018369f3eb4fe4f4792238adfc1f6fd5dc; From bd27568117664b8b3e259721393df420ed51f57b · fixed in 723e85fb2c3bcd237ac02cbd69502ed62ce0068c; From bd27568117664b8b3e259721393df420ed51f57b · fixed in 6d0b9ce3be221c9077653f3670d60d66bb725ee2; From bd27568117664b8b3e259721393df420ed51f57b · fixed in e2770c76a02452fddb52e9e05c7ed6acfef06c32; From bd27568117664b8b3e259721393df420ed51f57b · fixed in 59e63416f5153e7d58652c616fbdcb7d5e01fff7
- Linux Linux
6.2
- KernelLinux
From 6.2.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53; From 6.19.0 · fixed in 7.2.7