HOMEVULNERABILITIESCVE-2026-43118
MEDIUM

CVE-2026-43118

Published: May 6, 2026· Updated: May 8, 2026

5.5
CVSS v3.1
EPSS:0.02%probability of exploitation in 30 daysPercentile:4.1th

Official Description

In the Linux kernel, the following vulnerability has been resolved:

btrfs: fix zero size inode with non-zero size after log replay

When logging that an inode exists, as part of logging a new name or

logging new dir entries for a directory, we always set the generation of

the logged inode item to 0. This is to signal during log replay (in

overwrite_item()), that we should not set the i_size since we only logged

that an inode exists, so the i_size of the inode in the subvolume tree

must be preserved (as when we log new names or that an inode exists, we

don't log extents).

This works fine except when we have already logged an inode in full mode

or it's the first time we are logging an inode created in a past

transaction, that inode has a new i_size of 0 and then we log a new name

for the inode (due to a new hardlink or a rename), in which case we log

an i_size of 0 for the inode and a generation of 0, which causes the log

replay code to not update the inode's i_size to 0 (in overwrite_item()).

An example scenario:

mkdir /mnt/dir

xfs_io -f -c "pwrite 0 64K" /mnt/dir/foo

sync

xfs_io -c "truncate 0" -c "fsync" /mnt/dir/foo

ln /mnt/dir/foo /mnt/dir/bar

xfs_io -c "fsync" /mnt/dir

<power fail>

After log replay the file remains with a size of 64K. This is because when

we first log the inode, when we fsync file foo, we log its current i_size

of 0, and then when we create a hard link we log again the inode in exists

mode (LOG_INODE_EXISTS) but we set a generation of 0 for the inode item we

add to the log tree, so during log replay overwrite_item() sees that the

generation is 0 and i_size is 0 so we skip updating the inode's i_size

from 64K to 0.

Fix this by making sure at fill_inode_item() we always log the real

generation of the inode if it was logged in the current transaction with

the i_size we logged before. Also if an inode created in a previous

transaction is logged in exists mode only, make sure we log the i_size

stored in the inode item located from the commit root, so that if we log

multiple times that the inode exists we get the correct i_size.

A test case for fstests will follow soon.

NVD Source

Technical Analysis

CVE-2026-43118 requires local access, meaning attackers must already have a foothold on the target system.

Exploitation requires low privileges, which limits the exposure to scenarios where an attacker has already gained initial access.

A successful exploit results in availability disruption (denial of service), with a CVSS base score of 5.5.

CVSS v3.1 Vector Breakdown

Exploitability
Attack VectorLocal
Attack ComplexityLow
Privileges Req.Low
User InteractionNone
ScopeUnchanged
Impact
ConfidentialityNone
IntegrityNone
AvailabilityHigh
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Affected Vendors & Products

Linux1 product
linux kernel
Source: NVD CPE · 2 total CPE entries

Exploit & PoC Resources

NO KNOWN EXPLOITNo public exploit confirmed at this time
External links open in a new tab. Always verify in a controlled environment before use.

Official Patches & Advisories

All References (3)

Quick Facts

CVE IDCVE-2026-43118
CVSS Score5.5 / 10
SeverityMEDIUM
CISA KEVNo
EPSS (30d)0.02%
Affected1 vendor
PublishedMay 6, 2026

Recommended Actions

  • Apply vendor patches immediately
  • Monitor CVE-2026-43118 in threat intel feeds
  • Review IDS/IPS signatures for exploitation attempts
Data sourced from NVD (NIST), CISA KEV, and EPSS (FIRST). Analysis generated by CTIWATCH.COM. CVE data is provided under the NVD usage policy.