LiveActive security incident?Get immediate response
CVE Record

CVE-2024-56758: btrfs: check folio mapping after unlock in relocate_one_folio()

In the Linux kernel, the following vulnerability has been resolved: btrfs: check folio mapping after unlock in relocate_one_folio() When we call btrfs_read_folio() to bring a folio uptodate, we unlock the folio. The result of that is that a different thread can modify the mapping (like remove it with invalidate) before we call folio_lock(). This results in an invalid page and we need to try again. In particular, if we are relocating concurrently with aborting a transaction, this can result in a crash like the following: BUG: kernel NULL pointer dereference, address: 0000000000000000 PGD 0 P4D 0 Oops: 0000 [#1] SMP CPU: 76 PID: 1411631 Comm: kworker/u322:5 Workqueue: events_unbound btrfs_reclaim_bgs_work RIP: 0010:set_page_extent_mapped+0x20/0xb0 RSP: 0018:ffffc900516a7be8 EFLAGS: 00010246 RAX: ffffea009e851d08 RBX: ffffea009e0b1880 RCX: 0000000000000000 RDX: 0000000000000000 RSI: ffffc900516a7b90 RDI: ffffea009e0b1880 RBP: 0000000003573000 R08: 0000000000000001 R09: ffff88c07fd2f3f0 R10: 0000000000000000 R11: 0000194754b575be R12: 0000000003572000 R13: 0000000003572fff R14: 0000000000100cca R15: 0000000005582fff FS: 0000000000000000(0000) GS:ffff88c07fd00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000 CR3: 000000407d00f002 CR4: 00000000007706f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 PKRU: 55555554 Call Trace: <TASK> ? __die+0x78/0xc0 ? page_fault_oops+0x2a8/0x3a0 ? __switch_to+0x133/0x530 ? wq_worker_running+0xa/0x40 ? exc_page_fault+0x63/0x130 ? asm_exc_page_fault+0x22/0x30 ? set_page_extent_mapped+0x20/0xb0 relocate_file_extent_cluster+0x1a7/0x940 relocate_data_extent+0xaf/0x120 relocate_block_group+0x20f/0x480 btrfs_relocate_block_group+0x152/0x320 btrfs_relocate_chunk+0x3d/0x120 btrfs_reclaim_bgs_work+0x2ae/0x4e0 process_scheduled_works+0x184/0x370 worker_thread+0xc6/0x3e0 ? blk_add_timer+0xb0/0xb0 kthread+0xae/0xe0 ? flush_tlb_kernel_range+0x90/0x90 ret_from_fork+0x2f/0x40 ? flush_tlb_kernel_range+0x90/0x90 ret_from_fork_asm+0x11/0x20 </TASK> This occurs because cleanup_one_transaction() calls destroy_delalloc_inodes() which calls invalidate_inode_pages2() which takes the folio_lock before setting mapping to NULL. We fail to check this, and subsequently call set_extent_mapping(), which assumes that mapping != NULL (in fact it asserts that in debug mode) Note that the "fixes" patch here is not the one that introduced the race (the very first iteration of this code from 2009) but a more recent change that made this particular crash happen in practice.

UnknownCVSS not scoredNot KEV-listedUpdated
Glexia's TakeAutomated analysismoderate

Security readout for executives and security teams

Plain-English summary

CVE-2024-56758 is a Linux kernel Btrfs bug that can crash a system when filesystem relocation overlaps with transaction abort cleanup. The public record describes a kernel NULL pointer dereference, not data theft or remote code execution.

Executive priority

Treat as a reliability and availability risk for Btrfs-backed Linux systems. It should be patched through normal kernel maintenance, with higher priority for storage-heavy production hosts or systems that perform Btrfs relocation operations.

Technical view

In Btrfs relocate_one_folio(), btrfs_read_folio() can unlock a folio, allowing another thread to invalidate its mapping before relocking. Subsequent code assumes mapping is non-NULL and can crash in set_page_extent_mapped during relocation and transaction abort cleanup.

Likely exposure

Exposure is most relevant to Linux systems using Btrfs on affected kernel versions or unfixed vendor kernels. The supplied data names Linux kernel stable fixes and Debian LTS guidance, but does not provide full distribution-by-distribution status.

Exploitation context

The source bundle does not show CISA KEV listing or active exploitation. The described trigger is a concurrency race during Btrfs relocation and transaction abort handling, resulting in a kernel crash condition.

Researcher notes

Evidence supports a race-induced NULL pointer dereference in Btrfs folio mapping handling. The record does not provide CVSS, CWE, exploit evidence, or a complete affected-version matrix, so validation should rely on vendor kernel advisories and commit backports.

Mitigation direction

  • Apply vendor kernel updates containing the referenced Linux stable fixes.
  • Prioritize hosts using Btrfs for production storage or maintenance operations.
  • Check Debian or distribution advisories for packaged fixed kernel versions.
  • If patching is delayed, follow vendor guidance for supported risk reduction.
  • Monitor for kernel crashes until patched and validated.

Validation and detection

  • Inventory Linux hosts using Btrfs filesystems.
  • Compare running kernel versions against vendor advisories and stable fix commits.
  • Review kernel logs for oops traces involving Btrfs relocation functions.
  • Confirm patched systems boot the expected fixed kernel.
  • Run normal Btrfs maintenance only under approved operational procedures.
Prepared
Confidence
medium
Sources
7

Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.

Potential ATT&CK relevance

Conservative CVE-to-ATT&CK context

These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.

ATT&CK lookup starting points

Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.

cve · low confidence lookup

CVE-2024-56758 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
Unknown
CVSS
Not scored
Known Exploited
No
Published
Official CVE source material

CNA and ADP enrichment extracted from CVE v5

These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.

0CVSS vectors
3Timeline events
1ADP providers
6Source links

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

ADP provider summaries

CVECVE Program Container
Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
LinuxLinux08daa38ca212d87f77beae839bc9be71079c7abf, e7f1326cc24e22b38afc3acd328480a1183f9e79, e7f1326cc24e22b38afc3acd328480a1183f9e79, e7f1326cc24e22b38afc3acd328480a1183f9e79, 9d1e020ed9649cf140fcfafd052cfdcce9e9d67d, 6.1.54, 6.5.4unaffected
LinuxLinux6.6, 0, 6.1.141, 6.6.93, 6.12.8, 6.13affected
Weakness

CWE details

No CWE listed

CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.