Description
In the Linux kernel, the following vulnerability has been resolved:
f2fs: fix to avoid mapping wrong physical block for swapfile
Xiaolong Guo reported a f2fs bug in bugzilla [1]
[1] https://bugzilla.kernel.org/show_bug.cgi?id=220951
Quoted:
"When using stress-ng's swap stress test on F2FS filesystem with kernel 6.6+,
the system experiences data corruption leading to either:
1 dm-verity corruption errors and device reboot
2 F2FS node corruption errors and boot hangs
The issue occurs specifically when:
1 Using F2FS filesystem (ext4 is unaffected)
2 Swapfile size is less than F2FS section size (2MB)
3 Swapfile has fragmented physical layout (multiple non-contiguous extents)
4 Kernel version is 6.6+ (6.1 is unaffected)
The root cause is in check_swap_activate() function in fs/f2fs/data.c. When the
first extent of a small swapfile (< 2MB) is not aligned to section boundaries,
the function incorrectly treats it as the last extent, failing to map
subsequent extents. This results in incorrect swap_extent creation where only
the first extent is mapped, causing subsequent swap writes to overwrite wrong
physical locations (other files' data).
Steps to Reproduce
1 Setup a device with F2FS-formatted userdata partition
2 Compile stress-ng from https://github.com/ColinIanKing/stress-ng
3 Run swap stress test: (Android devices)
adb shell "cd /data/stressng; ./stress-ng-64 --metrics-brief --timeout 60
--swap 0"
Log:
1 Ftrace shows in kernel 6.6, only first extent is mapped during second
f2fs_map_blocks call in check_swap_activate():
stress-ng-swap-8990: f2fs_map_blocks: ino=11002, file offset=0, start
blkaddr=0x43143, len=0x1
(Only 4KB mapped, not the full swapfile)
2 in kernel 6.1, both extents are correctly mapped:
stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=0, start
blkaddr=0x13cd4, len=0x1
stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=1, start
blkaddr=0x60c84b, len=0xff
The problematic code is in check_swap_activate():
if ((pblock - SM_I(sbi)->main_blkaddr) % blks_per_sec ||
nr_pblocks % blks_per_sec ||
!f2fs_valid_pinned_area(sbi, pblock)) {
bool last_extent = false;
not_aligned++;
nr_pblocks = roundup(nr_pblocks, blks_per_sec);
if (cur_lblock + nr_pblocks > sis->max)
nr_pblocks -= blks_per_sec;
/* this extent is last one */
if (!nr_pblocks) {
nr_pblocks = last_lblock - cur_lblock;
last_extent = true;
}
ret = f2fs_migrate_blocks(inode, cur_lblock, nr_pblocks);
if (ret) {
if (ret == -ENOENT)
ret = -EINVAL;
goto out;
}
if (!last_extent)
goto retry;
}
When the first extent is unaligned and roundup(nr_pblocks, blks_per_sec)
exceeds sis->max, we subtract blks_per_sec resulting in nr_pblocks = 0. The
code then incorrectly assumes this is the last extent, sets nr_pblocks =
last_lblock - cur_lblock (entire swapfile), and performs migration. After
migration, it doesn't retry mapping, so subsequent extents are never processed.
"
In order to fix this issue, we need to lookup block mapping info after
we migrate all blocks in the tail of swapfile.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 6.6.33 – < 6.6.127, 6.9 | 6.6.127 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | linux | 6.18.13-1 | — |
| Debian 13 | linux | 6.12.74-2 | DSA-6162-1 |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Nvidia-BlueField 24.04 LTS | linux-bluefield | 6.8.0-1026.30 | — |
| Ubuntu 25.10 | linux +8 | No fix yet | — |
| Ubuntu 24.04 LTS | linux | 6.8.0-134.134 | USN-8492-1 |
| Ubuntu 24.04 LTS | linux-aws | 6.8.0-1060.63 | USN-8492-1 |
| Ubuntu 24.04 LTS | linux-azure | 6.8.0-1063.71 | USN-8606-1 |
| Ubuntu 24.04 LTS | linux-azure-fde | 6.8.0-1062.69 | USN-8607-1 |
| Ubuntu 24.04 LTS | linux-azure-nvidia | 6.8.0-1039.42 | — |
| Ubuntu 24.04 LTS | linux-gcp | 6.8.0-1063.69 | USN-8492-1 |
| Ubuntu 24.04 LTS | linux-gke | 6.8.0-1058.64 | USN-8492-2 |
| Ubuntu 24.04 LTS | linux-gkeop | 6.8.0-1045.48 | USN-8492-2 |
| Ubuntu 24.04 LTS | linux-ibm | 6.8.0-1060.61 | USN-8492-1 |
| Ubuntu 24.04 LTS | linux-lowlatency | 6.8.0-134.134.1 | USN-8497-1 |
| Ubuntu 24.04 LTS | linux-nvidia | 6.8.0-1058.61 | USN-8492-1 |
| Ubuntu 24.04 LTS | linux-nvidia-lowlatency | 6.8.0-1058.61.1 | USN-8492-2 |
| Ubuntu 24.04 LTS | linux-nvidia-tegra | 6.8.0-1029.30 | USN-8498-1 |
| Ubuntu 24.04 LTS | linux-oracle | 6.8.0-1057.58 | USN-8492-1 |
| Ubuntu 24.04 LTS | linux-raspi | 6.8.0-1060.64 | USN-8492-4 |
| Ubuntu 24.04 LTS | linux-riscv +26 | No fix yet | — |
| Ubuntu 24.04 LTS | linux-xilinx | 6.8.0-1032.33 | USN-8499-1 |
| Ubuntu 22.04 LTS | linux-aws-6.8 | 6.8.0-1060.63~22.04.1 | USN-8492-2 |
| Ubuntu 22.04 LTS | linux-azure-6.8 | 6.8.0-1063.71~22.04.1 | USN-8606-1 |
| Ubuntu 22.04 LTS | linux-azure-fde-6.8 | 6.8.0-1062.69~22.04.1 | USN-8609-1 |
| Ubuntu 22.04 LTS | linux-gcp-6.8 | 6.8.0-1063.69~22.04.1 | USN-8492-2 |
| Ubuntu 22.04 LTS | linux-hwe-6.8 | 6.8.0-136.136~22.04.1 | USN-8619-1 |
| Ubuntu 22.04 LTS | linux-ibm-6.8 | 6.8.0-1060.61~22.04.1 | USN-8492-2 |
| Ubuntu 22.04 LTS | linux-lowlatency-hwe-6.8 | 6.8.0-134.134.1~22.04.1 | USN-8497-1 |
| Ubuntu 22.04 LTS | linux-nvidia-6.8 | 6.8.0-1058.61~22.04.1 | USN-8492-1 |
| Ubuntu 22.04 LTS | linux-oracle-6.8 | 6.8.0-1057.58~22.04.1 | USN-8492-2 |
| Ubuntu 22.04 LTS | linux-riscv +32 | No fix yet | — |
| Ubuntu 22.04 LTS | linux-riscv-6.8 | 6.8.0-134.134~22.04.1 | — |
| Ubuntu 20.04 LTS | linux-gke +28 | No fix yet | — |
Show 5 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 18.04 LTS | linux-gcp +14 | No fix yet | — |
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
| Ubuntu Pro Realtime 24.04 LTS | linux-raspi-realtime | 6.8.0-2049.50 | USN-8492-3 |
| Ubuntu Pro Realtime 24.04 LTS | linux-realtime | 6.8.1-1055.56 | USN-8492-1 |
| Ubuntu Pro Realtime 24.04 LTS | linux-realtime-6.14 +1 | No fix yet | — |
| Ubuntu Pro Realtime 22.04 LTS | linux-realtime-6.8 | 6.8.1-1055.56~22.04.1 | USN-8492-1 |
| Ubuntu Pro FIPS-updates 24.04 LTS | linux-aws-fips | 6.8.0-1060.63+fips1 | USN-8492-1 |
| Ubuntu Pro FIPS-updates 24.04 LTS | linux-azure-fips | 6.8.0-1062.69+fips1 | USN-8492-5 |
| Ubuntu Pro FIPS-updates 24.04 LTS | linux-fips | 6.8.0-134.134+fips1 | USN-8492-5 |
| Ubuntu Pro FIPS-updates 24.04 LTS | linux-gcp-fips | 6.8.0-1063.69+fips1 | USN-8492-1 |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Tumbleweed | kernel-source | 6.19.8-1.1 | openSUSE-SU-2026:10387-1 |
Oracle Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Oracle Linux 9 | kernel-uek +34 | 6.12.0-200.74.27.el10uek | ELSA-2026-50160 |
Advisories 16
- USN-8606-1 linux-azure, linux-azure-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 7, 2026
- USN-8607-1 linux-azure-fde vulnerabilities Ubuntu Security Notices (USN) · Nov 7, 2026
- USN-8619-1 linux-hwe-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 7, 2026
- USN-8609-1 linux-azure-fde-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 7, 2026
- USN-8497-1 linux-lowlatency, linux-lowlatency-hwe-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 7, 2026
- USN-8499-1 linux-xilinx vulnerabilities Ubuntu Security Notices (USN) · Nov 7, 2026
- USN-8492-1 linux, linux-aws, linux-aws-fips, linux-gcp, linux-gcp-fips, linux-ibm, linux-nvidia, linux-nvidia-6.8, linux-oracle, linux-realtime, linux-realtime-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 6, 2026
- USN-8492-2 linux-aws-6.8, linux-gcp-6.8, linux-gke, linux-gkeop, linux-ibm-6.8, linux-nvidia-lowlatency, linux-oracle-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 6, 2026
- USN-8498-1 linux-nvidia-tegra vulnerabilities Ubuntu Security Notices (USN) · Nov 6, 2026
- USN-8492-3 linux-raspi-realtime vulnerabilities Ubuntu Security Notices (USN) · Nov 6, 2026
- USN-8492-5 linux-azure-fips, linux-fips vulnerabilities Ubuntu Security Notices (USN) · Nov 6, 2026
- USN-8492-4 linux-raspi vulnerabilities Ubuntu Security Notices (USN) · Nov 6, 2026
- WID-SEC-2026-0614 Linux Kernel: Mehrere Schwachstellen BSI CERT-Bund (WID) · Sep 21, 2026
- DSA-6162-1 linux - security update Debian Security (DSA / DLA) · Mar 23, 2026
- ELSA-2026-50160 Important: Unbreakable Enterprise kernel security update (Oracle Linux 9) Oracle Linux Security Advisories (ELSA) · Mar 20, 2026
- openSUSE-SU-2026:10387-1 kernel-devel-6.19.8-1.1 on GA media SUSE / openSUSE Security Updates · Mar 19, 2026
References
- https://git.kernel.org/stable/c/d4534a7f6c92baaf7e12a45fc6e37332cafafc33
- https://git.kernel.org/stable/c/1ff415eef513bf12deb058fc50d57788c46c48e6
- https://git.kernel.org/stable/c/fee27b69dde1a05908b350eea42937af2387c4fe
- https://git.kernel.org/stable/c/607cb9d83838d2cd9f0406c2403ed61aadf0edff
- https://git.kernel.org/stable/c/5c145c03188bc9ba1c29e0bc4d527a5978fc47f9