Description
In the Linux kernel, the following vulnerability has been resolved: powerpc/perf: fix preempt count underflow in fsl_emb_pmu_del fsl_emb_pmu_del() unconditionally calls put_cpu_var(cpu_hw_events) at the 'out:' label, but only calls the matching get_cpu_var() after the 'i < 0' early-return check. When event->hw.idx is negative the function jumps to 'out:' without having taken get_cpu_var(), and the trailing put_cpu_var() then issues an unmatched preempt_enable(), underflowing preempt_count. On a CONFIG_PREEMPT=y kernel preempt_count would underflow and eventually present as a 'scheduling while atomic' BUG. Move put_cpu_var() to pair with get_cpu_var() so the percpu access is correctly bracketed and the 'out:' label only handles perf_pmu_enable.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
a11106544f33c104706ae42d27219a409b67478e to < c0c7722308c5f303117d8bd555290fdf26b098daaffecteda11106544f33c104706ae42d27219a409b67478e to < 67aeb1eb93d4ffd898a3e74a7f3fe46ee71feb28affecteda11106544f33c104706ae42d27219a409b67478e to < 9a515e00b00132b6fc3f1dd62dc5204bbda8cb10affecteda11106544f33c104706ae42d27219a409b67478e to < 5397142d60aa29dcf636f5459d960bfc4f97c42aaffecteda11106544f33c104706ae42d27219a409b67478e to < b89477077c834d94381c7bf07d81193bebefcff9affecteda11106544f33c104706ae42d27219a409b67478e to < 73711688479df333acc134e3730fff1acba1843eaffecteda11106544f33c104706ae42d27219a409b67478e to < b504fd953664c3f4d176ae8cb594adb3fda9d577affecteda11106544f33c104706ae42d27219a409b67478e to < 81e3a86030462824a67d697739cf3f387f4ba350affected
Linux Linux
Default version status: affected
2.6.34affected0 to < 2.6.34unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/c0c7722308c5f303117d8bd555290fdf26b098da ↗
- https://git.kernel.org/stable/c/67aeb1eb93d4ffd898a3e74a7f3fe46ee71feb28 ↗
- https://git.kernel.org/stable/c/9a515e00b00132b6fc3f1dd62dc5204bbda8cb10 ↗
- https://git.kernel.org/stable/c/5397142d60aa29dcf636f5459d960bfc4f97c42a ↗
- https://git.kernel.org/stable/c/b89477077c834d94381c7bf07d81193bebefcff9 ↗
- https://git.kernel.org/stable/c/73711688479df333acc134e3730fff1acba1843e ↗
- https://git.kernel.org/stable/c/b504fd953664c3f4d176ae8cb594adb3fda9d577 ↗
- https://git.kernel.org/stable/c/81e3a86030462824a67d697739cf3f387f4ba350 ↗