Linux: perf: Fix perf_pmu_migrate_context() leaving events behind
What fixes it
- 3eb08f09bfb364051f51316da873c3bd51a839efLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
perf: Fix perf_pmu_migrate_context() leaving events behind
__perf_pmu_remove() walks the group leaders of a CPU and PMU with perf_event_groups_for_cpu_pmu(), removing each one as it goes. perf_remove_from_context() takes the leader out of the groups rbtree, after which rb_next() on that node returns NULL, prematurely ending the walk. Other groups stay behind in the source context.
On CPU hotplug, they are then torn down with the dying CPU. They keep running until teardown, while the PMU's interrupt and migrated events are on a new CPU, which drivers rely on never happening.
Walk ctx->event_list instead and pick out the PMU's events by their pmu_ctx.
Text from CVE List
Affected versions 8
- Linuxaffected: bd27568117664b8b3e259721393df420ed51f57b before 3eb08f09bfb364051f51316da873c3bd51a839efCVE List
- Linuxaffected: bd27568117664b8b3e259721393df420ed51f57b before f5f0028764de322a3d04eda0d3b6389ca9847446CVE List
- Linuxaffected: bd27568117664b8b3e259721393df420ed51f57b before e76b36b4be7160eaa14b416681e548b125702395CVE List
- Linuxaffected: 6.2CVE List
- Linuxunaffected: all versions before 6.2CVE List
- Linuxunaffected: 6.18.59 through 6.18.*CVE List
- Linuxunaffected: 7.2.13 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List