CVE-2023-53859 in Linuxinfo

Summary

by MITRE • 12/09/2025

In the Linux kernel, the following vulnerability has been resolved:

s390/idle: mark arch_cpu_idle() noinstr

linux-next commit ("cpuidle: tracing: Warn about !rcu_is_watching()") adds a new warning which hits on s390's arch_cpu_idle() function:

RCU not on for: arch_cpu_idle+0x0/0x28 WARNING: CPU: 2 PID: 0 at include/linux/trace_recursion.h:162 arch_ftrace_ops_list_func+0x24c/0x258 Modules linked in: CPU: 2 PID: 0 Comm: swapper/2 Not tainted 6.2.0-rc6-next-20230202 #4 Hardware name: IBM 8561 T01 703 (z/VM 7.3.0) Krnl PSW : 0404d00180000000 00000000002b55c0 (arch_ftrace_ops_list_func+0x250/0x258) R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0 EA:3 Krnl GPRS: c0000000ffffbfff 0000000080000002 0000000000000026 0000000000000000 0000037ffffe3a28 0000037ffffe3a20 0000000000000000 0000000000000000 0000000000000000 0000000000f4acf6 00000000001044f0 0000037ffffe3cb0 0000000000000000 0000000000000000 00000000002b55bc 0000037ffffe3bb8 Krnl Code: 00000000002b55b0: c02000840051 larl %r2,0000000001335652 00000000002b55b6: c0e5fff512d1 brasl %r14,0000000000157b58 #00000000002b55bc: af000000 mc 0,0 >00000000002b55c0: a7f4ffe7 brc 15,00000000002b558e 00000000002b55c4: 0707 bcr 0,%r7 00000000002b55c6: 0707 bcr 0,%r7 00000000002b55c8: eb6ff0480024 stmg %r6,%r15,72(%r15) 00000000002b55ce: b90400ef lgr %r14,%r15 Call Trace: [<00000000002b55c0>] arch_ftrace_ops_list_func+0x250/0x258
([<00000000002b55bc>] arch_ftrace_ops_list_func+0x24c/0x258)
[<0000000000f5f0fc>] ftrace_common+0x1c/0x20
[<00000000001044f6>] arch_cpu_idle+0x6/0x28
[<0000000000f4acf6>] default_idle_call+0x76/0x128
[<00000000001cc374>] do_idle+0xf4/0x1b0
[<00000000001cc6ce>] cpu_startup_entry+0x36/0x40
[<0000000000119d00>] smp_start_secondary+0x140/0x150
[<0000000000f5d2ae>] restart_int_handler+0x6e/0x90

Mark arch_cpu_idle() noinstr like all other architectures with CONFIG_ARCH_WANTS_NO_INSTR (should) have it to fix this.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Analysis

by VulDB Data Team • 03/30/2026

The vulnerability identified as CVE-2023-53859 affects the Linux kernel's handling of CPU idle states on IBM s390 architecture systems. This issue stems from a missing annotation in the arch_cpu_idle() function that prevents proper RCU (Read-Copy-Update) tracking during idle state transitions. The problem manifests when the kernel attempts to trace CPU idle operations, triggering a warning that indicates RCU is not properly watching during the arch_cpu_idle function execution. This represents a fundamental inconsistency in how the s390 architecture handles idle state management compared to other CPU architectures within the Linux kernel ecosystem.

The technical flaw occurs because the arch_cpu_idle() function lacks the noinstr annotation that is required for proper tracing operations on s390 systems. When the kernel's cpuidle subsystem attempts to trace idle state transitions, it encounters the RCU warning indicating that the RCU subsystem is not properly watching the execution context. This condition arises from the fact that the s390 architecture does not automatically receive the noinstr annotation that other architectures with CONFIG_ARCH_WANTS_NO_INSTR properly implement. The function call trace shows the execution path leading from arch_ftrace_ops_list_func through arch_cpu_idle to default_idle_call, ultimately reaching do_idle and cpu_startup_entry, demonstrating the cascade of idle state handling that fails due to the missing annotation.

The operational impact of this vulnerability is significant for IBM z/VM and mainframe environments that rely on Linux kernel idle state management for power efficiency and system stability. Systems running with kernel versions containing this flaw may experience tracing inconsistencies that could affect debugging capabilities and system monitoring. The warning message indicates that RCU tracking is not functioning properly during CPU idle operations, which could potentially lead to incorrect system state reporting and complicate troubleshooting efforts. This issue particularly affects systems using the s390 architecture where the kernel's tracing infrastructure expects consistent behavior across all CPU architectures.

The mitigation for this vulnerability involves applying the fix that marks the arch_cpu_idle() function with the noinstr annotation, aligning it with other architectures that implement CONFIG_ARCH_WANTS_NO_INSTR. This change ensures that the function properly handles RCU tracking during idle state transitions and prevents the warning messages from appearing in kernel logs. The fix follows established kernel development practices for maintaining consistency across different CPU architectures and adheres to the principle that all architectures should implement the same tracing behavior when CONFIG_ARCH_WANTS_NO_INSTR is enabled. This vulnerability aligns with CWE-691, which addresses insufficient control flow protection, and relates to ATT&CK technique T1059.003 for system binary modification where kernel-level changes are required to address tracing inconsistencies.

The resolution demonstrates the importance of architectural consistency in kernel development, where different CPU architectures must maintain similar behaviors for tracing and monitoring operations. The fix ensures that s390 systems properly integrate with the kernel's tracing infrastructure, preventing the warning conditions that could mask more serious underlying issues. This change represents a defensive programming approach that maintains kernel stability and ensures that all CPU architectures provide consistent behavior for idle state management and tracing operations. The vulnerability highlights the need for comprehensive testing across different architectures when implementing kernel tracing features to avoid such architectural inconsistencies that could impact system reliability and maintainability.

Responsible

Linux

Reservation

12/09/2025

Disclosure

12/09/2025

Moderation

accepted

CPE

ready

EPSS

0.00194

KEV

no

Activities

very low

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!