CVE-2026-52991
Received Received - Intake
Race Condition in Linux Kernel Scheduler Pressure Tracking

Publication date: 2026-06-24

Last updated on: 2026-06-24

Assigner: kernel.org

Description
In the Linux kernel, the following vulnerability has been resolved: sched/psi: fix race between file release and pressure write A potential race condition exists between pressure write and cgroup file release regarding the priv member of struct kernfs_open_file, which triggers the uaf reported in [1]. Consider the following scenario involving execution on two separate CPUs: CPU0 CPU1 ==== ==== vfs_rmdir() kernfs_iop_rmdir() cgroup_rmdir() cgroup_kn_lock_live() cgroup_destroy_locked() cgroup_addrm_files() cgroup_rm_file() kernfs_remove_by_name() kernfs_remove_by_name_ns() vfs_write() __kernfs_remove() new_sync_write() kernfs_drain() kernfs_fop_write_iter() kernfs_drain_open_files() cgroup_file_write() kernfs_release_file() pressure_write() cgroup_file_release() ctx = of->priv; kfree(ctx); of->priv = NULL; cgroup_kn_unlock() cgroup_kn_lock_live() cgroup_get(cgrp) cgroup_kn_unlock() if (ctx->psi.trigger) // here, trigger uaf for ctx, that is of->priv The cgroup_rmdir() is protected by the cgroup_mutex, it also safeguards the memory deallocation of of->priv performed within cgroup_file_release(). However, the operations involving of->priv executed within pressure_write() are not entirely covered by the protection of cgroup_mutex. Consequently, if the code in pressure_write(), specifically the section handling the ctx variable executes after cgroup_file_release() has completed, a uaf vulnerability involving of->priv is triggered. Therefore, the issue can be resolved by extending the scope of the cgroup_mutex lock within pressure_write() to encompass all code paths involving of->priv, thereby properly synchronizing the race condition occurring between cgroup_file_release() and pressure_write(). And, if an live kn lock can be successfully acquired while executing the pressure write operation, it indicates that the cgroup deletion process has not yet reached its final stage; consequently, the priv pointer within open_file cannot be NULL. Therefore, the operation to retrieve the ctx value must be moved to a point *after* the live kn lock has been successfully acquired. In another situation, specifically after entering cgroup_kn_lock_live() but before acquiring cgroup_mutex, there exists a different class of race condition: CPU0: write memory.pressure CPU1: write cgroup.pressure=0 =========================== ============================= kernfs_fop_write_iter() kernfs_get_active_of(of) pressure_write() cgroup_kn_lock_live(memory.pressure) cgroup_tryget(cgrp) kernfs_break_active_protection(kn) ... blocks on cgroup_mutex cgroup_pressure_write() cgroup_kn_lock_live(cgroup.pressure) cgroup_file_show(memory.pressure, false) kernfs_show(false) kernfs_drain_open_files() cgroup_file_release(of) kfree(ctx) of->priv = NULL cgroup_kn_unlock() ... acquires cgroup_mutex ctx = of->priv; // may now be NULL if (ctx->psi.trigger) // NULL dereference Consequently, there is a possibility that of->priv is NULL, the pressure write needs to check for this. Now that the scope of the cgroup_mutex has been expanded, the original explicit cgroup_get/put operations are no longer necessary, this is because acquiring/releasing the live kn lock inherently executes a cgroup get/put operation. [1] BUG: KASAN: slab-use-after-free in pressure_write+0xa4/0x210 kernel/cgroup/cgroup.c:4011 Call Trace: pressure_write+0xa4/0x210 kernel/cgroup/cgroup.c:4011 cgroup_file_write+0x36f/0x790 kernel/cgroup/cgroup.c:43 ---truncated---
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-06-24
Last Modified
2026-06-24
Generated
2026-06-25
AI Q&A
2026-06-24
EPSS Evaluated
N/A
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
linux linux_kernel *
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

This vulnerability is a race condition in the Linux kernel related to the interaction between pressure write operations and cgroup file release. Specifically, it involves the priv member of the struct kernfs_open_file, which can be freed and set to NULL during cgroup file release while pressure write operations are still accessing it. This leads to a use-after-free (uaf) condition.

The issue arises because the cgroup_rmdir() function, which is protected by the cgroup_mutex, safely handles the memory deallocation of the priv member during cgroup_file_release(). However, the pressure_write() function accesses priv without full protection by this mutex, allowing a race where pressure_write() may access priv after it has been freed.

The vulnerability can cause the kernel to dereference a NULL or freed pointer, leading to undefined behavior or crashes. The fix involves extending the cgroup_mutex lock in pressure_write() to cover all code paths involving priv, ensuring proper synchronization and preventing the race condition.

Impact Analysis

This vulnerability can lead to a use-after-free condition in the Linux kernel, which may cause system instability, crashes, or potential escalation of privileges if exploited. Since it involves kernel memory management, an attacker could potentially trigger this race condition to execute arbitrary code or cause denial of service by crashing the system.

Mitigation Strategies

This vulnerability is caused by a race condition in the Linux kernel between pressure write and cgroup file release operations, leading to a use-after-free (uaf) issue.

To mitigate this vulnerability, the Linux kernel patch extends the scope of the cgroup_mutex lock within the pressure_write() function to cover all code paths involving the priv member of struct kernfs_open_file. This ensures proper synchronization and prevents the race condition.

Additionally, the pressure_write() function should check if the priv pointer is NULL before dereferencing it to avoid null pointer dereference.

Therefore, the immediate mitigation steps are to update your Linux kernel to a version that includes this fix, which properly synchronizes the cgroup_mutex lock in pressure_write() and adds necessary null checks.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-52991. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart