All vulnerabilities
CVE-2026-97587

Linux: perf: RISC-V: store available counter mask as bitmap

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.20%Chance of exploitation activity in the next 30 days, higher than 9% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in5a1b6379eed5b13eac0228b605b0bed988e547e9Also 143668c424772979a45118dc9cc9c2c13a35f41d, 9bec7beaed074bcae4181fde9ff9dfbe4e7b0957 and 1 moreCVE List
Published25 Sep 2026Updated 21 Oct 2026CVE List

What fixes it

  • 5a1b6379eed5b13eac0228b605b0bed988e547e9LinuxCVE List
  • 143668c424772979a45118dc9cc9c2c13a35f41dLinuxCVE List
  • 9bec7beaed074bcae4181fde9ff9dfbe4e7b0957LinuxCVE List
  • 6809da6e9c08ccc9a09cb0a48c61471679274aaaLinuxCVE 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: RISC-V: store available counter mask as bitmap

The available-counter mask was a single unsigned long, but iteration uses RISCV_MAX_COUNTERS, which is 64. On RV32 that reads past the object. Filling with an unsigned-long bit at index 32 and above is also wrong.

Use DECLARE_BITMAP and set_bit/bitmap helpers. Walk each bitmap word into CFG_MATCH when checking events, when allocating an index, and when stopping all counters. Set the counter base to i times BITS_PER_LONG. Share the CFG_MATCH ecall through a small helper so the 32-bit argument split is not duplicated. On qemu-system-riscv32 the probe bitmap has bits above XLEN set, so the first word alone is not enough.

[pjw@kernel.org: updated to apply; fixed checkpatch.pl issues]

Text from CVE List

Affected versions 12

  • Linuxaffected: e9991434596f5373dfd75857b445eb92a9253c56 before 5a1b6379eed5b13eac0228b605b0bed988e547e9CVE List
  • Linuxaffected: e9991434596f5373dfd75857b445eb92a9253c56 before 143668c424772979a45118dc9cc9c2c13a35f41dCVE List
  • Linuxaffected: e9991434596f5373dfd75857b445eb92a9253c56 before 9bec7beaed074bcae4181fde9ff9dfbe4e7b0957CVE List
  • Linuxaffected: e9991434596f5373dfd75857b445eb92a9253c56 before e5481db31f4654e9a1254d5d467d9b1ff2f8b1cbCVE List
  • Linuxaffected: e9991434596f5373dfd75857b445eb92a9253c56 before 6809da6e9c08ccc9a09cb0a48c61471679274aaaCVE List
  • Linuxaffected: 5.18CVE List
  • Linuxunaffected: all versions before 5.18CVE List
  • Linuxunaffected: 6.6.160 through 6.6.*CVE List
  • Linuxunaffected: 6.12.111 through 6.12.*CVE List
  • Linuxunaffected: 6.18.53 through 6.18.*CVE List
  • Linuxunaffected: 7.2.7 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 5