CVE-2026-52980: Linux Kernel Fair Scheduler Crash via Fork and Yield
CVE-2026-52980 is a memory corruption and denial-of-service vulnerability in the Linux kernel scheduler that can be triggered by a combination of process forking and yield operations. When a new process is created, the kernel's fair scheduling class fails to properly initialize certain deadline tracking state, causing subsequent scheduler operations to compute abnormally large deadline values. If the affected process later yields, these inflated values cascade into corrupted internal accounting structures, potentially rendering the entire scheduler unable to pick runnable processes and causing a system crash. The vulnerability requires local access and unprivileged execution, making it a practical risk in multi-user and containerized Linux environments.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.5 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- CWE-476
- Affected products
- 2 configuration(s)
- Published / Modified
- 2026-06-24 / 2026-07-14
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: sched/fair: Clear rel_deadline when initializing forked entities A yield-triggered crash can happen when a newly forked sched_entity enters the fair class with se->rel_deadline unexpectedly set. The failing sequence is: 1. A task is forked while se->rel_deadline is still set. 2. __sched_fork() initializes vruntime, vlag and other sched_entity state, but does not clear rel_deadline. 3. On the first enqueue, enqueue_entity() calls place_entity(). 4. Because se->rel_deadline is set, place_entity() treats se->deadline as a relative deadline and converts it to an absolute deadline by adding the current vruntime. 5. However, the forked entity's deadline is not a valid inherited relative deadline for this new scheduling instance, so the conversion produces an abnormally large deadline. 6. If the task later calls sched_yield(), yield_task_fair() advances se->vruntime to se->deadline. 7. The inflated vruntime is then used by the following enqueue path, where the vruntime-derived key can overflow when multiplied by the entity weight. 8. This corrupts cfs_rq->sum_w_vruntime, breaks EEVDF eligibility calculation, and can eventually make all entities appear ineligible. pick_next_entity() may then return NULL unexpectedly, leading to a later NULL dereference. A captured trace shows the effect clearly. Before yield, the entity's vruntime was around: 9834017729983308 After yield_task_fair() executed: se->vruntime = se->deadline the vruntime jumped to: 19668035460670230 and the deadline was later advanced further to: 19668035463470230 This shows that the deadline had already become abnormally large before yield_task_fair() copied it into vruntime. rel_deadline is only meaningful when se->deadline really carries a relative deadline that still needs to be placed against vruntime. A freshly forked sched_entity should not inherit or retain this state. Clear se->rel_deadline in __sched_fork(), together with the other sched_entity runtime state, so that the first enqueue does not interpret the new entity's deadline as a stale relative deadline.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The Linux kernel's EEVDF (Earliest Eligible Virtual Deadline First) fair scheduler contains a state initialization bug in the process fork path. When __sched_fork() initializes a new scheduling entity, it clears vruntime and vlag but neglects to clear the rel_deadline flag. This flag signals to place_entity() that a deadline value is relative and must be converted to an absolute deadline by addition with current vruntime. In a forked task, this flag remains stale, causing place_entity() to misinterpret the inherited (uninitialized or residual) deadline as a relative value. The conversion produces an abnormally large absolute deadline. If the forked task later invokes sched_yield(), yield_task_fair() copies this inflated deadline into se->vruntime. The oversized vruntime, when multiplied by task weight during subsequent enqueue operations, overflows the sum_w_vruntime accumulator, corrupting the fair scheduling queue's weighted virtual runtime tracking. This breaks EEVDF eligibility calculations, potentially marking all entities as ineligible and causing pick_next_entity() to return NULL, leading to NULL dereference crashes in the scheduler core.
Business impact
This vulnerability can cause local denial of service on Linux systems through unexpected kernel crashes affecting system stability and availability. In multi-tenant environments—including shared hosting, containerized deployments, and virtual private servers—an unprivileged user can crash the host kernel, disrupting all workloads. The attack surface includes any application that forks child processes and performs yield operations, making it relevant to web applications, microservices, and development tools. Cloud providers and managed service operators face risk to service availability SLAs. The crash occurs in the scheduler's critical path, so exploitation is difficult to detect or prevent at the application layer.
Affected systems
The vulnerability affects the Linux kernel scheduler's fair class implementation. It impacts all Linux distributions and systems using the mainline kernel or derivatives with the EEVDF scheduler. The flaw was introduced as part of kernel scheduling improvements and affects systems where unprivileged users can create processes and invoke scheduler operations. Containerized and multi-user Linux systems face elevated risk due to broader attack surface.
Exploitability
Exploitation requires local access and unprivileged execution privileges. An attacker would need to craft or identify a workload sequence combining process forking with explicit yield operations under specific timing or load conditions to reliably trigger the scheduler state corruption. The vulnerability is not remotely exploitable and does not require special kernel capabilities. However, the likelihood of accidental triggering by normal application behavior (fork + yield patterns) increases risk in production environments running diverse workloads.
Remediation
The fix involves ensuring that rel_deadline is explicitly cleared when a new scheduling entity is initialized during process fork, preventing the flag from carrying stale state into the forked task's first scheduler enqueue. This is a surgical change to __sched_fork() to zero the rel_deadline field alongside other per-entity runtime state. Vendors and distribution maintainers should apply the corrective patch to affected kernel versions and test against existing scheduler test suites to verify no regressions in EEVDF behavior.
Patch guidance
Check your Linux distribution's security advisory and kernel update channels for patched versions. Verify against the vendor advisory to confirm the specific kernel versions that receive the fix. Most distributions will backport the fix into currently supported stable kernel series. Update to the patched kernel version when available and perform a system reboot to apply the changes. Test applications that heavily use process forking and yield to confirm no unintended behavioral changes.
Detection guidance
Monitor system logs for unexpected kernel crashes related to the scheduler or pick_next_entity function returning NULL. Kernel Oops or BUG messages mentioning fair.c or the EEVDF scheduler are indicators. Enable kernel crash dump (kdump/kexec) to capture detailed kernel logs during failures. In production, track kernel panic events and correlate them with workload patterns involving fork and yield operations. Threat hunting can examine process creation patterns on multi-user systems to identify potential trigger scenarios, though the attack requires deliberate action and is unlikely to occur randomly.
Why prioritize this
This vulnerability merits prioritization for systems running vulnerable kernel versions in multi-user or containerized environments where unprivileged users have process execution rights. While the attack surface is local and exploitation is non-trivial, the impact is a kernel crash affecting all running processes. Organizations should prioritize patching if they operate shared Linux infrastructure, support user code execution, or run Kubernetes and other containerization platforms. Systems with strict user access controls and no process execution by untrusted code face lower risk.
Risk score, explained
The CVSS 3.1 score of 5.5 (MEDIUM) reflects the local attack requirement, unprivileged access threshold, and denial-of-service impact without confidentiality or integrity loss. The score does not fully capture the reliability or likelihood of exploitation—triggering the race condition requires specific forking and yield patterns that may occur reliably under known conditions or require attacker setup. In environments where user code execution is unavoidable, the practical risk may exceed the base score. Organizational risk depends heavily on the attack surface (number of unprivileged users or containers) and system availability tolerance.
Frequently asked questions
Can this vulnerability be exploited remotely?
No. CVE-2026-52980 requires local code execution with unprivileged user privileges. It cannot be exploited over the network or by unauthenticated attackers.
What kernel scheduling class is affected?
The vulnerability affects the Linux kernel's fair scheduling class and the EEVDF scheduler implementation. Kernels using the CFS (Completely Fair Scheduler) or EEVDF implementation are vulnerable. Real-time scheduling classes and systems with custom schedulers may not be affected.
Can I mitigate this without patching the kernel?
Mitigation options are limited. Running only trusted code, restricting unprivileged user process creation, or using strict seccomp/apparmor policies to block yield syscalls are possible but may break legitimate workloads. Kernel patching is the recommended remediation.
How does this differ from a typical memory corruption bug?
Rather than allowing arbitrary code execution, this vulnerability's memory corruption is self-contained to scheduler state, causing the scheduler to fail rather than being weaponized for privilege escalation. The impact is denial of service rather than code execution, which is why the CVSS score is moderate.
This analysis is based on CVE data and vendor advisories available as of the knowledge cutoff. CVSS scores and patch versions provided herein are derived from official sources; verify specific patch versions and applicability against the vendor's security advisory before deployment. Exploit assumptions and attack scenarios are illustrative and not exhaustive. Security impact may vary based on kernel configuration, distribution-specific patches, and system policies. Consult your Linux vendor's security bulletin for definitive guidance on affected versions and remediation timelines. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2025-71313MEDIUMLinux Kernel PCI Endpoint NULL Pointer Dereference
- CVE-2026-46118MEDIUMLinux Kernel PAPR Hypervisor Pipe Null Pointer Dereference (POWER Systems)
- CVE-2026-46127MEDIUMLinux Kernel OCRDMA Null Pointer Dereference (DoS)
- CVE-2026-46134MEDIUMLinux Kernel cros_ec Mutex Initialization DoS Vulnerability
- CVE-2026-46188MEDIUMLinux Octeon EP VF NULL Pointer Dereference Denial of Service
- CVE-2026-46211MEDIUMLinux Kernel MSM DRM NULL Pointer and Silent Error in gem_info_get_metadata
- CVE-2026-46216MEDIUMLinux Intel Arc GPU NULL Pointer Dereference (HDCP)
- CVE-2026-46222MEDIUMLinux Rockchip RKCam Driver Null Pointer Dereference