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.
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Ubuntu | — | Upgrade linux-image-gcpUpgrade linux-image-nvidia-hwe-26.04Upgrade linux-image-raspi-realtimeUpgrade linux-image-7.0.0-1011-gcp-64kUpgrade linux-image-nvidia-bosUpgrade linux-image-awsUpgrade linux-image-7.0.0-1008-oracleUpgrade linux-image-nvidia-7.0Upgrade linux-image-nvidia-64kUpgrade linux-image-gcp-64k-7.0Upgrade linux-image-nvidia-64k-hwe-26.04Upgrade linux-image-azure-7.0Upgrade linux-image-7.0.0-1016-nvidia-64kUpgrade linux-image-7.0.0-1014-azureUpgrade linux-image-gcp-64kUpgrade linux-image-azure-fdeUpgrade linux-image-oracle-64kUpgrade linux-image-aws-64kUpgrade linux-image-nvidia-bos-64kUpgrade linux-image-azureUpgrade linux-image-raspiUpgrade linux-image-7.0.0-1015-raspiUpgrade linux-image-raspi-7.0Upgrade linux-image-nvidia-bos-7.0Upgrade linux-image-ibmUpgrade linux-image-7.0.0-2016-nvidia-bos-64kUpgrade linux-image-7.0.0-1010-ibmUpgrade linux-image-aws-64k-7.0Upgrade linux-image-7.0.0-1008-oracle-64kUpgrade linux-image-oracle-64k-7.0Upgrade linux-image-oracleUpgrade linux-image-oracle-7.0Upgrade linux-image-nvidia-bos-64k-7.0Upgrade linux-image-7.0.0-1016-nvidiaUpgrade linux-image-7.0.0-1010-azureUpgrade linux-image-7.0.0-1009-aws-64kUpgrade linux-image-raspi-realtime-7.0Upgrade linux-image-azure-fde-7.0Upgrade linux-image-7.0.0-1015-raspi-realtimeUpgrade linux-image-7.0.0-1011-gcpUpgrade linux-image-ibm-7.0Upgrade linux-image-gcp-7.0Upgrade linux-image-nvidiaUpgrade linux-image-nvidia-64k-7.0Upgrade linux-image-aws-7.0Upgrade linux-image-7.0.0-1009-awsUpgrade linux-image-7.0.0-2016-nvidia-bosUpgrade linux-image-7.0.0-1009-azure-fde | Jul 21, 2026 | Jul 20, 2026 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub