CVE-2023-53583: perf: RISC-V: Remove PERF_HES_STOPPED flag checking in riscv_pmu_start()
In the Linux kernel, the following vulnerability has been resolved:
perf: RISC-V: Remove PERF_HES_STOPPED flag checking in riscv_pmu_start()
Since commit 096b52fd2bb4 ("perf: RISC-V: throttle perf events") the
perf_sample_event_took() function was added to report time spent in
overflow interrupts. If the interrupt takes too long, the perf framework
will lower the sysctl_perf_event_sample_rate and max_samples_per_tick.
When hwc->interrupts is larger than max_samples_per_tick, the
hwc->interrupts will be set to MAX_INTERRUPTS, and events will be
throttled within the __perf_event_account_interrupt() function.
However, the RISC-V PMU driver doesn't call riscv_pmu_stop() to update the
PERF_HES_STOPPED flag after perf_event_overflow() in pmu_sbi_ovf_handler()
function to avoid throttling. When the perf framework unthrottled the event
in the timer interrupt handler, it triggers riscv_pmu_start() function
and causes a WARN_ON_ONCE() warning, as shown below:
------------[ cut here ]------------
WARNING: CPU: 0 PID: 240 at drivers/perf/riscv_pmu.c:184 riscv_pmu_start+0x7c/0x8e
Modules linked in:
CPU: 0 PID: 240 Comm: ls Not tainted 6.4-rc4-g19d0788e9ef2 #1
Hardware name: SiFive (DT)
epc : riscv_pmu_start+0x7c/0x8e
ra : riscv_pmu_start+0x28/0x8e
epc : ffffffff80aef864 ra : ffffffff80aef810 sp : ffff8f80004db6f0
gp : ffffffff81c83750 tp : ffffaf80069f9bc0 t0 : ffff8f80004db6c0
t1 : 0000000000000000 t2 : 000000000000001f s0 : ffff8f80004db720
s1 : ffffaf8008ca1068 a0 : 0000ffffffffffff a1 : 0000000000000000
a2 : 0000000000000001 a3 : 0000000000000870 a4 : 0000000000000000
a5 : 0000000000000000 a6 : 0000000000000840 a7 : 0000000000000030
s2 : 0000000000000000 s3 : ffffaf8005165800 s4 : ffffaf800424da00
s5 : ffffffffffffffff s6 : ffffffff81cc7590 s7 : 0000000000000000
s8 : 0000000000000006 s9 : 0000000000000001 s10: ffffaf807efbc340
s11: ffffaf807efbbf00 t3 : ffffaf8006a16028 t4 : 00000000dbfbb796
t5 : 0000000700000000 t6 : ffffaf8005269870
status: 0000000200000100 badaddr: 0000000000000000 cause: 0000000000000003
[<ffffffff80aef864>] riscv_pmu_start+0x7c/0x8e
[<ffffffff80185b56>] perf_adjust_freq_unthr_context+0x15e/0x174
[<ffffffff80188642>] perf_event_task_tick+0x88/0x9c
[<ffffffff800626a8>] scheduler_tick+0xfe/0x27c
[<ffffffff800b5640>] update_process_times+0x9a/0xba
[<ffffffff800c5bd4>] tick_sched_handle+0x32/0x66
[<ffffffff800c5e0c>] tick_sched_timer+0x64/0xb0
[<ffffffff800b5e50>] __hrtimer_run_queues+0x156/0x2f4
[<ffffffff800b6bdc>] hrtimer_interrupt+0xe2/0x1fe
[<ffffffff80acc9e8>] riscv_timer_interrupt+0x38/0x42
[<ffffffff80090a16>] handle_percpu_devid_irq+0x90/0x1d2
[<ffffffff8008a9f4>] generic_handle_domain_irq+0x28/0x36
After referring other PMU drivers like Arm, Loongarch, Csky, and Mips,
they don't call *_pmu_stop() to update with PERF_HES_STOPPED flag
after perf_event_overflow() function nor do they add PERF_HES_STOPPED
flag checking in *_pmu_start() which don't cause this warning.
Thus, it's recommended to remove this unnecessary check in
riscv_pmu_start() function to prevent this warning.
Security readout for executives and security teams
Plain-English summary
CVE-2023-53583 is a Linux kernel issue affecting the RISC-V performance monitoring driver. Under perf event throttling, the kernel can trigger a WARN_ON_ONCE warning. The public record describes a stability/noise issue rather than data theft or code execution. Exposure is mainly relevant to organizations running Linux on RISC-V hardware.
Executive priority
Treat as a low-priority kernel maintenance item unless RISC-V systems are business-critical or showing repeated kernel warnings. There is no cited evidence of active exploitation or direct compromise impact. Address through normal kernel update cycles and vendor validation.
Technical view
The RISC-V PMU driver checked PERF_HES_STOPPED in riscv_pmu_start(). After perf_event_overflow() and later unthrottling, this check can fire a WARN_ON_ONCE because the driver did not update the stopped flag in the same way expected by that path. The fix removes the unnecessary check, aligning behavior with other PMU drivers.
Likely exposure
Likely limited to Linux systems on RISC-V hardware with affected kernel versions or downstream kernels containing the referenced vulnerable code. The source bundle lists Linux 6.1, 6.4.5, and 6.5-related affected version data, but organizations should confirm against their vendor kernel trees.
Exploitation context
No source in the bundle reports active exploitation, public weaponization, or CISA KEV listing. The described trigger involves perf event overflow/throttling behavior causing a kernel warning. The available evidence does not establish privilege escalation, remote exploitation, or information disclosure.
Researcher notes
The record’s impact details are narrow: a WARN_ON_ONCE in riscv_pmu_start after perf throttling/unthrottling. CVSS and CWE are not provided. Affected-version metadata is limited and should be reconciled with stable commits and downstream backports before making fleet-wide conclusions.
Mitigation direction
Update to a Linux kernel build containing the referenced stable fixes.
Use distribution or hardware-vendor kernel advisories for exact package versions.
Prioritize RISC-V systems where perf events are enabled or actively used.
If patching is delayed, monitor for repeated RISC-V PMU kernel warnings.
Validation and detection
Inventory Linux systems running on RISC-V architecture.
Record running kernel versions and vendor kernel package revisions.
Check whether the kernel includes one of the referenced stable commits.
Review kernel logs for riscv_pmu_start WARN_ON_ONCE messages.
Confirm vendor advisories for affected and fixed downstream versions.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2023-53583 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
0ADP providers
4Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Oct 4, 2025, 15:43 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.