Skip to main content

Linux Kernel EUVDEUVD-2026-45724

| CVE-2026-63951 HIGH
2026-07-19 Linux GHSA-jmwm-428x-w863
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
6.5 MEDIUM

Local authenticated access (AV:L/PR:L); winning the completion-vs-free race is timing-dependent so AC:H; UAF crash gives high integrity/availability impact, limited confidentiality (C:L).

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:H
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:L/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
7.0 HIGH
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

4
Analysis Generated
Jul 20, 2026 - 16:31 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
7.8 (HIGH)
CVE Published
Jul 19, 2026 - 14:55 cve.org
HIGH 7.8
CVE Published
Jul 19, 2026 - 14:55 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

zram: fix use-after-free in zram_writeback_endio

A crash was observed in zram_writeback_endio due to a NULL pointer dereference in wake_up. The root cause is a race condition between the bio completion handler (zram_writeback_endio) and the writeback task.

In zram_writeback_endio, wake_up() is called on &wb_ctl->done_wait after releasing wb_ctl->done_lock. This creates a race window where the writeback task can see num_inflight become 0, return, and free wb_ctl before zram_writeback_endio calls wake_up().

CPU 0 (zram_writeback_endio) CPU 1 (writeback_store) ====== ====== zram_writeback_slots zram_submit_wb_request zram_submit_wb_request wait_event(wb_ctl->done_wait) spin_lock(&wb_ctl->done_lock); list_add(&req->entry, &wb_ctl->done_reqs); spin_unlock(&wb_ctl->done_lock); wake_up(&wb_ctl->done_wait); zram_complete_done_reqs spin_lock(&wb_ctl->done_lock); list_add(&req->entry, &wb_ctl->done_reqs); spin_unlock(&wb_ctl->done_lock); while (num_inflight) > 0) spin_lock(&wb_ctl->done_lock); list_del(&req->entry); spin_unlock(&wb_ctl->done_lock); // num_inflight becomes 0 atomic_dec(num_inflight);

// Leave zram_writeback_slots // Free wb_ctl release_wb_ctl(wb_ctl); // UAF crash! wake_up(&wb_ctl->done_wait);

This patch fixes this race by using RCU. By protecting wb_ctl with rcu_read_lock() in zram_writeback_endio and using kfree_rcu() to free it, we ensure that wb_ctl remains valid during the execution of zram_writeback_endio.

AnalysisAI

Local privilege escalation or denial of service in the Linux kernel's zram block device (writeback path) stems from a use-after-free in zram_writeback_endio, where the bio completion handler calls wake_up() on wb_ctl->done_wait after the writeback task may have already observed num_inflight reach zero and freed wb_ctl via release_wb_ctl(). Affecting kernels around 6.19/7.0 with zram writeback in use, a local attacker who can drive zram writeback activity may trigger the race to corrupt kernel memory, crashing the system or potentially escalating privileges. There is no public exploit identified at time of analysis and EPSS is low (0.21%), consistent with a hard-to-win kernel race rather than a trivially weaponizable bug.

Technical ContextAI

zram is the Linux kernel's compressed RAM block device, commonly used for compressed swap and zram-backed storage; its optional writeback feature offloads incompressible or idle pages to a backing device via asynchronous bio submission. The affected code path uses a wb_ctl control structure containing a done_wait waitqueue, a done_lock spinlock, a done_reqs list, and a num_inflight counter to coordinate outstanding writeback bios. The root cause is a classic use-after-free (CWE-416, though the feed lists CWE as N/A) driven by a lifetime/ordering race: zram_writeback_endio releases done_lock and only then calls wake_up() on the waitqueue, but between those two operations the waiting writeback task in zram_writeback_slots can complete all requests, see num_inflight drop to zero, return, and free wb_ctl - so the subsequent wake_up() dereferences freed memory. The fix wraps wb_ctl access in the completion handler with rcu_read_lock() and defers freeing with kfree_rcu(), guaranteeing the structure stays valid for the duration of zram_writeback_endio.

RemediationAI

Upstream fix available (stable commits ebe2cbef... and bf62f695...); apply the distribution kernel update that incorporates them - patched kernels are reported around 7.0.12 and 7.1, so upgrade to your vendor's build containing these commits (see https://git.kernel.org/stable/c/ebe2cbefc86291fa7f386447a81995640df4e2fd and https://git.kernel.org/stable/c/bf62f69574b19720ae5fbbbcdf24a0c4e3e05e43). Where immediate kernel patching is not possible, the most direct compensating control is to avoid the vulnerable code path by not enabling zram writeback (do not configure a backing_dev for zram devices, or avoid triggering writeback), which eliminates exposure at the cost of losing the RAM-offload-to-disk capability; if zram is used only for compressed swap without writeback, the vulnerable path is not exercised. Additionally restrict local access and the ability to drive zram writeback to trusted users, since the attack is local-only, accepting that this only reduces rather than removes risk on shared or multi-tenant hosts.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Not-Affected

Share

EUVD-2026-45724 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy