Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-63804

CVE-2026-63804: Linux Kernel Use-After-Free Vulnerability

CVE-2026-63804 is a use-after-free vulnerability in the Linux kernel's GFS2 filesystem that can cause memory corruption during unmount operations. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-63804 Overview

CVE-2026-63804 is a use-after-free vulnerability in the Linux kernel's Global File System 2 (gfs2) quota subsystem. The flaw resides in gfs2_qd_dealloc(), which is invoked as a Read-Copy-Update (RCU) callback from gfs2_qd_dispose(). The function accesses the superblock object sdp through qd->qd_sbd after the quota descriptor has been freed. Under certain unmount conditions, gfs2_put_super() may free the superblock via free_sbd() while RCU callbacks still hold references to it. The vulnerability has been patched upstream and backported across stable kernel branches.

Critical Impact

Local operations that trigger gfs2 unmount paths may cause kernel memory corruption or crashes due to superblock access after free.

Affected Products

  • Linux kernel (gfs2 filesystem subsystem)
  • Distributions shipping vulnerable stable kernel branches prior to the referenced fix commits
  • Systems mounting GFS2 filesystems with quota support enabled

Discovery Timeline

  • 2026-07-19 - CVE-2026-63804 published to NVD
  • 2026-07-19 - Last updated in NVD database

Technical Details for CVE-2026-63804

Vulnerability Analysis

The vulnerability affects the quota descriptor lifecycle in the gfs2 filesystem. The gfs2_qd_dealloc() function runs as an RCU callback scheduled by gfs2_qd_dispose(). It dereferences qd->qd_sbd to decrement sd_quota_count and wake up sd_kill_wait after qd has been freed. During unmount, gfs2_quota_cleanup() disposes quota objects using call_rcu() and then waits on sd_kill_wait with a 60-second timeout. If the timeout expires, or if gfs2_gl_hash_clear() schedules additional qd_put() calls that queue more RCU callbacks after the wait completes, gfs2_put_super() proceeds to free the superblock while callbacks still reference it. This creates a use-after-free on the superblock structure sdp.

Root Cause

The root cause is a missing synchronization barrier between RCU callback completion and superblock deallocation. The unmount path assumes that a bounded wait on sd_kill_wait is sufficient, but it does not guarantee that all deferred RCU callbacks touching the superblock have executed before free_sbd() runs.

Attack Vector

The issue triggers during filesystem unmount operations on gfs2 volumes with active quota objects. An unprivileged trigger is not documented; the flaw manifests through legitimate unmount sequences where RCU callback timing races with superblock teardown. The fix adds an rcu_barrier() call before free_sbd() in gfs2_put_super() to ensure all pending RCU callbacks complete before the superblock is released.

// Prose description only - see referenced kernel commits for the exact patch
// The remediation adds rcu_barrier() in gfs2_put_super() prior to free_sbd()
// to synchronize outstanding RCU callbacks referencing the superblock.

Detection Methods for CVE-2026-63804

Indicators of Compromise

  • Kernel oops or panic reports referencing gfs2_qd_dealloc in the call stack during or shortly after gfs2 unmount operations
  • KASAN (Kernel Address Sanitizer) reports indicating use-after-free access on superblock (gfs2_sbd) memory
  • Unexplained kernel crashes on systems performing frequent gfs2 mount/unmount cycles with quotas enabled

Detection Strategies

  • Enable KASAN on test kernels to catch use-after-free accesses in the gfs2 quota path during unmount stress testing
  • Correlate dmesg output with unmount operations on gfs2 volumes to identify latent races
  • Track kernel version and patch level across the fleet to identify hosts running vulnerable gfs2 code

Monitoring Recommendations

  • Collect kernel crash dumps and kdump artifacts from hosts running gfs2 clusters for post-incident triage
  • Monitor filesystem unmount syscall telemetry on shared-storage clusters where gfs2 is deployed
  • Alert on repeated kernel warnings mentioning qd_put, gfs2_quota_cleanup, or sd_kill_wait

How to Mitigate CVE-2026-63804

Immediate Actions Required

  • Apply the upstream kernel patches referenced in the stable tree commits and update to a fixed kernel release from your distribution vendor
  • Reboot systems into the patched kernel after installation to ensure the vulnerable code path is replaced
  • Inventory hosts using gfs2 with quota support and prioritize them for patching

Patch Information

The fix adds an rcu_barrier() before free_sbd() in gfs2_put_super() so that all pending RCU callbacks, including gfs2_qd_dealloc, complete before the superblock is freed. Patches are available in the following stable commits: Kernel Patch Commit 4fe3882, Kernel Patch Commit 8745d9f, Kernel Patch Commit 9d0d5ba, Kernel Patch Commit b85ef03, and Kernel Patch Commit f9c9ec2.

Workarounds

  • Where patching is not immediately possible, avoid repeated mount/unmount cycles on gfs2 filesystems with quotas enabled
  • Consider disabling gfs2 quota functionality on non-critical volumes until the patched kernel is deployed
  • Restrict mount/unmount operations to trusted administrators to reduce exposure to the race window
bash
# Verify running kernel and check for gfs2 module usage
uname -r
lsmod | grep gfs2
# After installing the vendor-provided patched kernel, reboot to activate the fix
sudo reboot

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.