CVE-2026-43158: xfs: fix freemap adjustments when adding xattrs to leaf blocks
In the Linux kernel, the following vulnerability has been resolved:
xfs: fix freemap adjustments when adding xattrs to leaf blocks
xfs/592 and xfs/794 both trip this assertion in the leaf block freemap
adjustment code after ~20 minutes of running on my test VMs:
ASSERT(ichdr->firstused >= ichdr->count * sizeof(xfs_attr_leaf_entry_t)
+ xfs_attr3_leaf_hdr_size(leaf));
Upon enabling quite a lot more debugging code, I narrowed this down to
fsstress trying to set a local extended attribute with namelen=3 and
valuelen=71. This results in an entry size of 80 bytes.
At the start of xfs_attr3_leaf_add_work, the freemap looks like this:
i 0 base 448 size 0 rhs 448 count 46
i 1 base 388 size 132 rhs 448 count 46
i 2 base 2120 size 4 rhs 448 count 46
firstused = 520
where "rhs" is the first byte past the end of the leaf entry array.
This is inconsistent -- the entries array ends at byte 448, but
freemap[1] says there's free space starting at byte 388!
By the end of the function, the freemap is in worse shape:
i 0 base 456 size 0 rhs 456 count 47
i 1 base 388 size 52 rhs 456 count 47
i 2 base 2120 size 4 rhs 456 count 47
firstused = 440
Important note: 388 is not aligned with the entries array element size
of 8 bytes.
Based on the incorrect freemap, the name area starts at byte 440, which
is below the end of the entries array! That's why the assertion
triggers and the filesystem shuts down.
How did we end up here? First, recall from the previous patch that the
freemap array in an xattr leaf block is not intended to be a
comprehensive map of all free space in the leaf block. In other words,
it's perfectly legal to have a leaf block with:
* 376 bytes in use by the entries array
* freemap[0] has [base = 376, size = 8]
* freemap[1] has [base = 388, size = 1500]
* the space between 376 and 388 is free, but the freemap stopped
tracking that some time ago
If we add one xattr, the entries array grows to 384 bytes, and
freemap[0] becomes [base = 384, size = 0]. So far, so good. But if we
add a second xattr, the entries array grows to 392 bytes, and freemap[0]
gets pushed up to [base = 392, size = 0]. This is bad, because
freemap[1] hasn't been updated, and now the entries array and the free
space claim the same space.
The fix here is to adjust all freemap entries so that none of them
collide with the entries array. Note that this fix relies on commit
2a2b5932db6758 ("xfs: fix attr leaf header freemap.size underflow") and
the previous patch that resets zero length freemap entries to have
base = 0.
Security readout for executives and security teams
Plain-English summary
A bookkeeping flaw in Linux XFS extended-attribute storage can make free space overlap metadata. Under the reproduced workload, adding an attribute triggers a kernel assertion and shuts down the filesystem, causing service disruption. The supplied 8.8 score indicates high theoretical impact, but sources demonstrate availability failure more clearly than data theft or remote compromise.
Executive priority
Treat this as a high-priority resilience issue for XFS-dependent production systems, especially multi-tenant hosts or services exposing xattr changes. Patch on an accelerated schedule after confirming vendor packages and dependencies. Emergency incident response is not justified by supplied exploitation evidence alone, but filesystem shutdown can create meaningful outage risk.
Technical view
When XFS grows a leaf block's xattr entry array, not all freemap entries are adjusted. A stale free-space region can overlap the entry array, placing the attribute name area below the array boundary. Reported tests trigger an assertion and filesystem shutdown. The fix adjusts every freemap entry to avoid collisions and depends on earlier freemap corrections.
Likely exposure
Exposure is most likely on systems running an affected Linux kernel and using XFS where an actor or workload can add extended attributes. The bundle lists a broad affected kernel range but does not map fixes to distribution package versions. Systems without XFS, or without the vulnerable code in their packaged kernel, are not established as exposed.
Exploitation context
No active exploitation is established: KEV is false and supplied sources report test-triggered failures, not attacks in the wild. The CVSS vector says network-accessible with low privileges, but the technical description only documents a local xattr operation. A practical remote path, confidentiality impact, and integrity impact are not demonstrated in this bundle.
Researcher notes
The crucial invariant is that no freemap extent may collide with the growing leaf-entry array, even though the freemap is intentionally incomplete. The reproduced 80-byte xattr exposes stale overlapping space and an unaligned base. Validate branch-specific backports carefully because the fix explicitly relies on earlier freemap underflow and zero-length-entry corrections.
Mitigation direction
Update to a vendor-supported kernel containing the applicable stable fix for your kernel branch.
Confirm the prerequisite freemap corrections are present before using any backported fix.
Follow Linux distributor guidance for package availability, rollout, and reboot requirements.
Prioritize systems where untrusted or low-privileged users can modify extended attributes on XFS.
Validation and detection
Inventory deployed kernel builds and systems with mounted XFS filesystems.
Map distribution kernel packages to upstream fixes or vendor advisories; version strings alone are insufficient.
Verify the applicable stable fix and stated prerequisite changes are included.
After updating, confirm systems booted the new kernel and XFS mounts operate normally.
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-2026-43158 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.
1CVSS vectors
3Timeline events
0ADP providers
9Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.