CVE-2026-43118

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

CVE-2026-43118 is fixed in 34 products on 1 platform, first by ALAS2023-2026-1693, released May 8, 2026. It is not reported as exploited. Patch Radar priority: Routine.

Routine
CVSS
5.5
Moderate
Exploitation
None reported
No vendor assessment
CISA KEV
Not listed
Not in the Known Exploited Vulnerabilities catalog
EPSS
0.0016
4th percentile

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.

Where it's fixed

ProductFixed inFixReleased
Linux
bpftool6.18 · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
bpftool6.18-debuginfo · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
dtb-aarch64 · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-64kb · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-64kb · sles 15.7 6.4.0-150700.53.73.2 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-64kb · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel-azure · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-azure · sles 15.7 6.4.0-150700.53.73.2 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-azure · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel-default · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-default · sles 15.7 6.4.0-150700.53.73.2 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-default · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23237-1 Aug 11, 2026
kernel-default-base · opensuse-leap 16.0 6.12.0-160000.37.1.160000.2.19 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-default-base · sles 15.7 6.4.0-150700.53.73.2.150700.17.41.4 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-default-base · sles 16.0 6.12.0-160000.37.1.160000.2.19 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel-docs · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-docs · sles 15.7 6.4.0-150700.53.73.1 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-docs · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel-kvmsmall · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-kvmsmall · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel-livepatch-6.18.25-55.108 · amzn 2023 1:1.0-0.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel-livepatch-SLE15-SP7-RT_Update_18 · sles 15.7 1-150700.1.5.1 SUSE-SU-2026:3130-1 Jul 20, 2026
kernel-livepatch-SLE15-SP7_Update_19 · sles 15.7 1-150700.15.3.4 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-obs-build · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-obs-build · sles 15.7 6.4.0-150700.53.73.2 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-obs-qa · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-obs-qa · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel-rt · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-source · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-source · sles 15.7 6.4.0-150700.53.73.1 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-source · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel-syms · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-syms · sles 15.7 6.4.0-150700.53.73.1 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-syms · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel-zfcpdump · opensuse-leap 16.0 6.12.0-160000.37.1 OPENSUSE-SU-2026:21555-1 Aug 12, 2026
kernel-zfcpdump · sles 15.7 6.4.0-150700.53.73.2 SUSE-SU-2026:3166-1 Jul 21, 2026
kernel-zfcpdump · sles 16.0 6.12.0-160000.37.1 SUSE-SU-2026:23231-1 Aug 11, 2026
kernel6.18 · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-debuginfo · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-debuginfo-common-aarch64 · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-debuginfo-common-x86_64 · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-devel · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-headers · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-modules-extra · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-modules-extra-common · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-tools · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-tools-debuginfo · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
kernel6.18-tools-devel · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
linux · Debian 13.5 (trixie) 6.12.115-2 DEBIAN-CVE-2026-43118 May 15, 2026
linux · Debian 14 6.19.14-1 DEBIAN-CVE-2026-43118 May 15, 2026
perf6.18 · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
perf6.18-debuginfo · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
python3-perf6.18 · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026
python3-perf6.18-debuginfo · amzn 2023 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693 May 8, 2026

Patch Radar data is free to use with attribution. Terms and how to credit it.

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.