All vulnerabilities
CVE-2026-93275

Linux: perf/x86/intel/pt: Fix stop/start with no update

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.18%Chance of exploitation activity in the next 30 days, higher than 7% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in304844b5545f444d523286da8228a1cbc46ffffaAlso 2e17bf3a469a41457a3bc31b1f8fd66b6ce94a6dCVE List
Published24 Sep 2026Updated 19 Oct 2026CVE List

What fixes it

  • 304844b5545f444d523286da8228a1cbc46ffffaLinuxCVE List
  • 2e17bf3a469a41457a3bc31b1f8fd66b6ce94a6dLinuxCVE 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/x86/intel/pt: Fix stop/start with no update

If pt_event_stop() is called without PERF_EF_UPDATE flag, then perf_aux_output_end() is not called. A subsequent call to pt_event_start() will call perf_aux_output_begin() again which violates the rule against nesting and triggers a WARNING in perf_aux_output_begin().

Originally, pt_event_stop() was never called without PERF_EF_UPDATE, because the only code paths to do so are from event overflow, and Intel PT does not do that.

However the introduction of group throttling by commit 9734e25fbf5ae ("perf: Fix the throttle logic for a group") meant that an Intel PT event could be throttled if it was part of a group. Throttling calls PMU ->stop() / ->start() callbacks without flags.

An example is when AUX area sampling is used. The following commands hit the issue:

echo 10000 > /proc/sys/kernel/perf_event_max_sample_rate

perf record -F32000 --aux-sample -e '{intel_pt//u,cycles:u}' \ -- bash -c 'for i in seq 1 100000 ; do true ; done'

Use PERF_HES_UPTODATE to track whether perf_aux_output_begin() and perf_aux_output_end() are balanced. A cleared PERF_HES_UPTODATE bit indicates that an AUX output context is still open.

Amend pt_event_start() / pt_event_stop() accordingly so that begin/end stay balanced:

  • In non-snapshot mode, stop() always closes the buffer (the buffer may

have run out of space, and that accounting is done by the update), so a following start() opens a fresh one as before.

  • In snapshot/overwrite mode, stop() without PERF_EF_UPDATE leaves the

buffer open so that pt_event_snapshot_aux() can still copy from it, and start() then only re-enables tracing instead of calling perf_aux_output_begin() again.

Note that pt_event_del() calls pt_event_stop() with PERF_EF_UPDATE flag set (as is required by the documentation), so a final call to perf_aux_output_end() is assured.

Text from CVE List

Affected versions 8

  • Linuxaffected: 9734e25fbf5ae68eb04234b2cd14a4b36ab89141 before cab5015ee3f25f789b4a368f2abfa65536576b78CVE List
  • Linuxaffected: 9734e25fbf5ae68eb04234b2cd14a4b36ab89141 before 304844b5545f444d523286da8228a1cbc46ffffaCVE List
  • Linuxaffected: 9734e25fbf5ae68eb04234b2cd14a4b36ab89141 before 2e17bf3a469a41457a3bc31b1f8fd66b6ce94a6dCVE List
  • Linuxaffected: 6.16CVE List
  • Linuxunaffected: all versions before 6.16CVE List
  • Linuxunaffected: 6.18.52 through 6.18.*CVE List
  • Linuxunaffected: 7.2.6 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 3