CVE-2021-47492: mm, thp: bail out early in collapse_file for writeback page
In the Linux kernel, the following vulnerability has been resolved:
mm, thp: bail out early in collapse_file for writeback page
Currently collapse_file does not explicitly check PG_writeback, instead,
page_has_private and try_to_release_page are used to filter writeback
pages. This does not work for xfs with blocksize equal to or larger
than pagesize, because in such case xfs has no page->private.
This makes collapse_file bail out early for writeback page. Otherwise,
xfs end_page_writeback will panic as follows.
page:fffffe00201bcc80 refcount:0 mapcount:0 mapping:ffff0003f88c86a8 index:0x0 pfn:0x84ef32
aops:xfs_address_space_operations [xfs] ino:30000b7 dentry name:"libtest.so"
flags: 0x57fffe0000008027(locked|referenced|uptodate|active|writeback)
raw: 57fffe0000008027 ffff80001b48bc28 ffff80001b48bc28 ffff0003f88c86a8
raw: 0000000000000000 0000000000000000 00000000ffffffff ffff0000c3e9a000
page dumped because: VM_BUG_ON_PAGE(((unsigned int) page_ref_count(page) + 127u <= 127u))
page->mem_cgroup:ffff0000c3e9a000
------------[ cut here ]------------
kernel BUG at include/linux/mm.h:1212!
Internal error: Oops - BUG: 0 [#1] SMP
Modules linked in:
BUG: Bad page state in process khugepaged pfn:84ef32
xfs(E)
page:fffffe00201bcc80 refcount:0 mapcount:0 mapping:0 index:0x0 pfn:0x84ef32
libcrc32c(E) rfkill(E) aes_ce_blk(E) crypto_simd(E) ...
CPU: 25 PID: 0 Comm: swapper/25 Kdump: loaded Tainted: ...
pstate: 60400005 (nZCv daif +PAN -UAO -TCO BTYPE=--)
Call trace:
end_page_writeback+0x1c0/0x214
iomap_finish_page_writeback+0x13c/0x204
iomap_finish_ioend+0xe8/0x19c
iomap_writepage_end_bio+0x38/0x50
bio_endio+0x168/0x1ec
blk_update_request+0x278/0x3f0
blk_mq_end_request+0x34/0x15c
virtblk_request_done+0x38/0x74 [virtio_blk]
blk_done_softirq+0xc4/0x110
__do_softirq+0x128/0x38c
__irq_exit_rcu+0x118/0x150
irq_exit+0x1c/0x30
__handle_domain_irq+0x8c/0xf0
gic_handle_irq+0x84/0x108
el1_irq+0xcc/0x180
arch_cpu_idle+0x18/0x40
default_idle_call+0x4c/0x1a0
cpuidle_idle_call+0x168/0x1e0
do_idle+0xb4/0x104
cpu_startup_entry+0x30/0x9c
secondary_start_kernel+0x104/0x180
Code: d4210000 b0006161 910c8021 94013f4d (d4210000)
---[ end trace 4a88c6a074082f8c ]---
Kernel panic - not syncing: Oops - BUG: Fatal exception in interrupt
Security readout for executives and security teams
Plain-English summary
This Linux kernel flaw can crash a system when transparent huge page collapse races with XFS writeback handling. The documented impact is kernel panic, so the business concern is availability, especially for Linux hosts using XFS under relevant kernel versions. The source bundle does not show data theft, privilege escalation, or active exploitation.
Executive priority
Schedule remediation in normal kernel patch cycles, faster for production systems where unexpected reboot or panic has high operational cost. Escalate only if vendor advisories add exploitability or broader impact evidence.
Technical view
collapse_file failed to explicitly reject pages under PG_writeback. For XFS configurations with block size equal to or larger than page size, page->private may be absent, so existing writeback filtering failed. khugepaged could then interact with a writeback page and trigger an end_page_writeback BUG/panic. The fix bails out early for writeback pages.
Likely exposure
Exposure is most likely on Linux systems using affected kernel builds, transparent huge pages, and XFS with relevant block-size conditions. The CVE data lists Linux affected entries including 5.4, 5.10.77, 5.14.16, and 5.15, but distribution backport status must be confirmed.
Exploitation context
The provided sources describe a reliability bug leading to kernel panic. They do not identify active exploitation, a public exploit, remote reachability, or attacker prerequisites. KEV is false in the supplied bundle, so treat this as an availability-risk kernel maintenance issue.
Researcher notes
The evidence supports a denial-of-service style kernel panic, not confidentiality or integrity impact. The affected-version data in the bundle is sparse and should be reconciled against distro kernel changelogs and the three kernel.org stable commits before final scoping.
Mitigation direction
Apply vendor kernel updates containing the referenced stable fixes.
Confirm distribution advisories because backports may change version exposure.
Prioritize reboot windows for XFS-backed Linux hosts running affected kernels.
If patching is delayed, ask the vendor for supported operational mitigations.
Track kernel.org stable commits listed in the CVE references.
Validation and detection
Inventory Linux kernel versions across XFS-backed systems.
Check whether installed kernels include the referenced stable commits.
Identify hosts using transparent huge pages and XFS workloads.
Review crash logs for khugepaged, collapse_file, or end_page_writeback panics.
Verify patched hosts after reboot report the expected kernel build.
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-2021-47492 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
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.