Linux: perf: RISC-V: store available counter mask as bitmap
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
- git.kernel.org/stable/c/5a1b6379eed5b13eac0228b605b0bed988e547e9Referencevia CVE List
- git.kernel.org/stable/c/143668c424772979a45118dc9cc9c2c13a35f41dReferencevia CVE List
- git.kernel.org/stable/c/9bec7beaed074bcae4181fde9ff9dfbe4e7b0957Referencevia CVE List
- git.kernel.org/stable/c/e5481db31f4654e9a1254d5d467d9b1ff2f8b1cbReferencevia CVE List
- git.kernel.org/stable/c/6809da6e9c08ccc9a09cb0a48c61471679274aaaReferencevia CVE List