# CVE-2022-49781: linux: In the Linux kernel, the following vulnerability has been resolved:  perf/x86/amd: Fix crash due to race between amd_...

CVE-2022-49781 is fixed in linux on 1 platform, first by DEBIAN-CVE-2022-49781, released May 1, 2025. It is not reported as exploited. Patch Radar priority: Routine.

- Web page: https://patchblox.com/security/cve/CVE-2022-49781
- Priority: Routine
- CVSS: 4.7 (medium)
- EPSS: 0.0012
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: May 1, 2025

## Description

In the Linux kernel, the following vulnerability has been resolved:  perf/x86/amd: Fix crash due to race between amd_pmu_enable_all, perf NMI and throttling  amd_pmu_enable_all() does:        if (!test_bit(idx, cpuc->active_mask))               continue;        amd_pmu_enable_event(cpuc->events[idx]);  A perf NMI of another event can come between these two steps. Perf NMI handler internally disables and enables _all_ events, including the one which nmi-intercepted amd_pmu_enable_all() was in process of enabling. If that unintentionally enabled event has very low sampling period and causes immediate successive NMI, causing the event to be throttled, cpuc->events[idx] and cpuc->active_mask gets cleared by x86_pmu_stop(). This will result in amd_pmu_enable_event() getting called with event=NULL when amd_pmu_enable_all() resumes after handling the NMIs. This causes a kernel crash:    BUG: kernel NULL pointer dereference, address: 0000000000000198   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   [...]   Call Trace:    <TASK>    amd_pmu_enable_all+0x68/0xb0    ctx_resched+0xd9/0x150    event_function+0xb8/0x130    ? hrtimer_start_range_ns+0x141/0x4a0    ? perf_duration_warn+0x30/0x30    remote_function+0x4d/0x60    __flush_smp_call_function_queue+0xc4/0x500    flush_smp_call_function_queue+0x11d/0x1b0    do_idle+0x18f/0x2d0    cpu_startup_entry+0x19/0x20    start_secondary+0x121/0x160    secondary_startup_64_no_verify+0xe5/0xeb    </TASK>  amd_pmu_disable_all()/amd_pmu_enable_all() calls inside perf NMI handler were recently added as part of BRS enablement but I'm not sure whether we really need them. We can just disable BRS in the beginning and enable it back while returning from NMI. This will solve the issue by not enabling those events whose active_masks are set but are not yet enabled in hw pmu.

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | linux Debian 12.15 (bookworm) | 6.0.10-1 | [DEBIAN-CVE-2022-49781](https://patchblox.com/security/data/fix/linux/debian-cve-2022-49781.md) | May 1, 2025 |
| Linux | linux Debian 13.5 (trixie) | 6.0.10-1 | [DEBIAN-CVE-2022-49781](https://patchblox.com/security/data/fix/linux/debian-cve-2022-49781.md) | May 1, 2025 |
| Linux | linux Debian 14 | 6.0.10-1 | [DEBIAN-CVE-2022-49781](https://patchblox.com/security/data/fix/linux/debian-cve-2022-49781.md) | May 1, 2025 |

---

Data as of 2026-11-08T13:06:02Z UTC. Source: Patchblox Patch Radar (https://patchblox.com/security/patch-radar). Patchblox finds out-of-date software on Windows, macOS and Linux and updates it through release rings: https://patchblox.com/demo

Free to use with attribution: show "Data: Patchblox Patch Radar" with a link to https://patchblox.com/security/patch-radar. Terms, including what needs a written agreement: https://patchblox.com/security/patch-radar/use-the-data

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.
