# CVE-2026-23435: linux: In the Linux kernel, the following vulnerability has been resolved:  perf/x86: Move event pointer setup earlier in x8...

CVE-2026-23435 is fixed in 23 products on 1 platform, first by DEBIAN-CVE-2026-23435, released April 3, 2026. It is not reported as exploited. Patch Radar priority: Routine.

- Web page: https://patchblox.com/security/cve/CVE-2026-23435
- Priority: Routine
- CVSS: 5.5 (medium)
- EPSS: 0.0013
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: Apr 3, 2026

## Description

In the Linux kernel, the following vulnerability has been resolved:  perf/x86: Move event pointer setup earlier in x86_pmu_enable()  A production AMD EPYC system crashed with a NULL pointer dereference in the PMU NMI handler:    BUG: kernel NULL pointer dereference, address: 0000000000000198   RIP: x86_perf_event_update+0xc/0xa0   Call Trace:    <NMI>    amd_pmu_v2_handle_irq+0x1a6/0x390    perf_event_nmi_handler+0x24/0x40  The faulting instruction is `cmpq $0x0, 0x198(%rdi)` with RDI=0, corresponding to the `if (unlikely(!hwc->event_base))` check in x86_perf_event_update() where hwc = &event->hw and event is NULL.  drgn inspection of the vmcore on CPU 106 showed a mismatch between cpuc->active_mask and cpuc->events[]:    active_mask: 0x1e (bits 1, 2, 3, 4)   events[1]:   0xff1100136cbd4f38  (valid)   events[2]:   0x0                 (NULL, but active_mask bit 2 set)   events[3]:   0xff1100076fd2cf38  (valid)   events[4]:   0xff1100079e990a90  (valid)  The event that should occupy events[2] was found in event_list[2] with hw.idx=2 and hw.state=0x0, confirming x86_pmu_start() had run (which clears hw.state and sets active_mask) but events[2] was never populated.  Another event (event_list[0]) had hw.state=0x7 (STOPPED|UPTODATE|ARCH), showing it was stopped when the PMU rescheduled events, confirming the throttle-then-reschedule sequence occurred.  The root cause is commit 7e772a93eb61 ("perf/x86: Fix NULL event access and potential PEBS record loss") which moved the cpuc->events[idx] assignment out of x86_pmu_start() and into step 2 of x86_pmu_enable(), after the PERF_HES_ARCH check. This broke any path that calls pmu->start() without going through x86_pmu_enable() -- specifically the unthrottle path:    perf_adjust_freq_unthr_events()     -> perf_event_unthrottle_group()       -> perf_event_unthrottle()         -> event->pmu->start(event, 0)           -> x86_pmu_start()     // sets active_mask but not events[]  The race sequence is:    1. A group of perf events overflows, triggering group throttle via      perf_event_throttle_group(). All events are stopped: active_mask      bits cleared, events[] preserved (x86_pmu_stop no longer clears      events[] after commit 7e772a93eb61).    2. While still throttled (PERF_HES_STOPPED), x86_pmu_enable() runs      due to other scheduling activity. Stopped events that need to      move counters get PERF_HES_ARCH set and events[old_idx] cleared.      In step 2 of x86_pmu_enable(), PERF_HES_ARCH causes these events      to be skipped -- events[new_idx] is never set.    3. The timer tick unthrottles the group via pmu->start(). Since      commit 7e772a93eb61 removed the events[] assignment from      x86_pmu_start(), active_mask[new_idx] is set but events[new_idx]      remains NULL.    4. A PMC overflow NMI fires. The handler iterates active counters,      finds active_mask[2] set, reads events[2] which is NULL, and      crashes dereferencing it.  Move the cpuc->events[hwc->idx] assignment in x86_pmu_enable() to before the PERF_HES_ARCH check, so that events[] is populated even for events that are not immediately started. This ensures the unthrottle path via pmu->start() always finds a valid event pointer.

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | bpftool6.18 amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | bpftool6.18-debuginfo amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel-livepatch-6.18.20-20.229 amzn 2023 | 1:1.0-0.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18 amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-debuginfo amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-debuginfo-common-aarch64 amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-debuginfo-common-x86_64 amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-devel amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-headers amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-libbpf amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-libbpf-debuginfo amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-libbpf-devel amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-libbpf-static amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-modules-extra amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-modules-extra-common amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-tools amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-tools-debuginfo amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | kernel6.18-tools-devel amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | linux Debian 14 | 6.19.10-1 | [DEBIAN-CVE-2026-23435](https://patchblox.com/security/data/fix/linux/debian-cve-2026-23435.md) | Apr 3, 2026 |
| Linux | perf6.18 amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | perf6.18-debuginfo amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | python3-perf6.18 amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |
| Linux | python3-perf6.18-debuginfo amzn 2023 | 1:6.18.20-20.229.amzn2023 | [ALAS2023-2026-1596](https://patchblox.com/security/data/fix/linux/alas2023-2026-1596.md) | Apr 27, 2026 |

---

Data as of 2026-11-09T01:18:40Z 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.
