Linux: perf: Fix null pointer access in is_include_guest_event()
What fixes it
- 7fa9a465ae8f07c0e4685db6edb6a6f984dbd784LinuxCVE List
- 88aed0422f39b22406f35f1e758cea25e7bbcfb5LinuxCVE 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 null pointer access in is_include_guest_event()
A typical module unload occurring event when there is an active perf connection leads to freeing of the pmu pointer. The call log is something like: .. __pmu_detach_event pmu_detach_event pmu_detach_events perf_pmu_unregister ..
__pmu_detach_event() sets event->pmu to null. When the perf connection finally is closed, the following stack trace is observed:
Oops: general protection fault, kernel NULL pointer dereference ... RIP: 0010:_free_event+0x3e/0x370 ... Call Trace: ... perf_event_release_kernel+0x260/0x2d0 perf_release+0x12/0x20
A call to mediated_pmu_unaccount_event() inside _free_event() is the root cause of this crash. Adding a check inside is_include_guest_event() ensures we don't accidentally access a null pmu ptr. In addition to this, we will now call mediated_pmu_unaccount_event() before clearing the pmu ptr so that nr_include_guest_events counts are maintained correctly.
Text from CVE List
Affected versions 6
- Linuxaffected: eff95e170275d9e80b968f335cd03d0ac250d2d1 before 7fa9a465ae8f07c0e4685db6edb6a6f984dbd784CVE List
- Linuxaffected: eff95e170275d9e80b968f335cd03d0ac250d2d1 before 88aed0422f39b22406f35f1e758cea25e7bbcfb5CVE List
- Linuxaffected: 7.0CVE List
- Linuxunaffected: all versions before 7.0CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List