Description
In the Linux kernel, the following vulnerability has been resolved:
btrfs: unset reloc control if transaction commit fails in prepare_to_relocate()
In btrfs_relocate_block_group(), the rc is allocated. Then
btrfs_relocate_block_group() calls
relocate_block_group()
prepare_to_relocate()
set_reloc_control()
that assigns rc to the variable fs_info->reloc_ctl. When
prepare_to_relocate() returns, it calls
btrfs_commit_transaction()
btrfs_start_dirty_block_groups()
btrfs_alloc_path()
kmem_cache_zalloc()
which may fail for example (or other errors could happen). When the
failure occurs, btrfs_relocate_block_group() detects the error and frees
rc and doesn't set fs_info->reloc_ctl to NULL. After that, in
btrfs_init_reloc_root(), rc is retrieved from fs_info->reloc_ctl and
then used, which may cause a use-after-free bug.
This possible bug can be triggered by calling btrfs_ioctl_balance()
before calling btrfs_ioctl_defrag().
To fix this possible bug, in prepare_to_relocate(), check if
btrfs_commit_transaction() fails. If the failure occurs,
unset_reloc_control() is called to set fs_info->reloc_ctl to NULL.
The error log in our fault-injection testing is shown as follows:
[ 58.751070] BUG: KASAN: use-after-free in btrfs_init_reloc_root+0x7ca/0x920 [btrfs]
...
[ 58.753577] Call Trace:
...
[ 58.755800] kasan_report+0x45/0x60
[ 58.756066] btrfs_init_reloc_root+0x7ca/0x920 [btrfs]
[ 58.757304] record_root_in_trans+0x792/0xa10 [btrfs]
[ 58.757748] btrfs_record_root_in_trans+0x463/0x4f0 [btrfs]
[ 58.758231] start_transaction+0x896/0x2950 [btrfs]
[ 58.758661] btrfs_defrag_root+0x250/0xc00 [btrfs]
[ 58.759083] btrfs_ioctl_defrag+0x467/0xa00 [btrfs]
[ 58.759513] btrfs_ioctl+0x3c95/0x114e0 [btrfs]
...
[ 58.768510] Allocated by task 23683:
[ 58.768777] ____kasan_kmalloc+0xb5/0xf0
[ 58.769069] __kmalloc+0x227/0x3d0
[ 58.769325] alloc_reloc_control+0x10a/0x3d0 [btrfs]
[ 58.769755] btrfs_relocate_block_group+0x7aa/0x1e20 [btrfs]
[ 58.770228] btrfs_relocate_chunk+0xf1/0x760 [btrfs]
[ 58.770655] __btrfs_balance+0x1326/0x1f10 [btrfs]
[ 58.771071] btrfs_balance+0x3150/0x3d30 [btrfs]
[ 58.771472] btrfs_ioctl_balance+0xd84/0x1410 [btrfs]
[ 58.771902] btrfs_ioctl+0x4caa/0x114e0 [btrfs]
...
[ 58.773337] Freed by task 23683:
...
[ 58.774815] kfree+0xda/0x2b0
[ 58.775038] free_reloc_control+0x1d6/0x220 [btrfs]
[ 58.775465] btrfs_relocate_block_group+0x115c/0x1e20 [btrfs]
[ 58.775944] btrfs_relocate_chunk+0xf1/0x760 [btrfs]
[ 58.776369] __btrfs_balance+0x1326/0x1f10 [btrfs]
[ 58.776784] btrfs_balance+0x3150/0x3d30 [btrfs]
[ 58.777185] btrfs_ioctl_balance+0xd84/0x1410 [btrfs]
[ 58.777621] btrfs_ioctl+0x4caa/0x114e0 [btrfs]
...
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 5.13 | 5.15.63 |
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.0.2-1 | — |
| Debian 13 | linux | 6.0.2-1 | — |
| Debian 12 | linux | 6.0.2-1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 24.04 LTS | linux-riscv +2 | No fix yet | — |
| Ubuntu 22.04 LTS | linux +1 | 5.15.0-53.59 | — |
| Ubuntu 22.04 LTS | linux-aws | 5.15.0-1023.27 | — |
| Ubuntu 22.04 LTS | linux-azure | 5.15.0-1023.29 | — |
| Ubuntu 22.04 LTS | linux-azure-fde | 5.15.0-1024.30.1 | — |
| Ubuntu 22.04 LTS | linux-gcp | 5.15.0-1022.29 | — |
| Ubuntu 22.04 LTS | linux-gke | 5.15.0-1020.25 | — |
| Ubuntu 22.04 LTS | linux-gkeop | 5.15.0-1008.12 | — |
| Ubuntu 22.04 LTS | linux-ibm | 5.15.0-1018.21 | — |
| Ubuntu 22.04 LTS | linux-intel-iotg | 5.15.0-1018.23 | — |
| Ubuntu 22.04 LTS | linux-kvm | 5.15.0-1021.26 | — |
| Ubuntu 22.04 LTS | linux-nvidia | 5.15.0-1015.15 | — |
| Ubuntu 22.04 LTS | linux-oracle | 5.15.0-1022.28 | — |
| Ubuntu 22.04 LTS | linux-raspi | 5.15.0-1018.20 | — |
| Ubuntu 22.04 LTS | linux-riscv +32 | No fix yet | — |
| Ubuntu 20.04 LTS | linux-aws-5.15 +1 | 5.15.0-1023.27~20.04.1 | — |
| Ubuntu 20.04 LTS | linux-azure-5.15 | 5.15.0-1023.29~20.04.1 | — |
| Ubuntu 20.04 LTS | linux-gcp-5.15 | 5.15.0-1022.29~20.04.1 | — |
| Ubuntu 20.04 LTS | linux-gke +28 | No fix yet | — |
| Ubuntu 20.04 LTS | linux-hwe-5.15 +1 | 5.15.0-53.59~20.04.1 | — |
| Ubuntu 20.04 LTS | linux-intel-iotg-5.15 | 5.15.0-1018.23~20.04.1 | — |
| Ubuntu 20.04 LTS | linux-oracle-5.15 | 5.15.0-1022.28~20.04.1 | — |
| Ubuntu 18.04 LTS | linux-gcp +14 | No fix yet | — |
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
Show 1 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Pro Realtime 22.04 LTS | linux-realtime | 5.15.0-1025.28 | — |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP5 | kernel-64kb +6 | 5.14.21-150500.55.113.1 | SUSE-SU-2025:02264-1 |
| SLES 15 SP5 | kernel-default-base | 5.14.21-150500.55.113.1.150500.6.53.1 | SUSE-SU-2025:02264-1 |
| SLES 15 SP4 | kernel-64kb +3 | 5.14.21-150400.24.170.2 | SUSE-SU-2025:02537-1 |
| SLES 15 SP4 | kernel-default-base | 5.14.21-150400.24.170.2.150400.24.86.2 | SUSE-SU-2025:02537-1 |
| SLES 15 SP4 | kernel-docs +2 | 5.14.21-150400.24.170.1 | SUSE-SU-2025:02537-1 |
| SLES 15 SP3 | kernel-64kb +6 | 5.3.18-150300.59.211.1 | SUSE-SU-2025:02308-1 |
| SLES 15 SP3 | kernel-default-base | 5.3.18-150300.59.211.1.150300.18.126.1 | SUSE-SU-2025:02308-1 |
| SLES 15 SP3 | kernel-obs-build | 5.3.18-150300.59.212.1 | SUSE-SU-2025:02308-1 |
| SLES 12 SP5 | kernel-syms +2 | 4.12.14-122.266.1 | SUSE-SU-2025:02334-1 |
| SLES 11 SP4 | kernel-ec2 +5 | 3.0.101-108.186.1 | SUSE-SU-2025:02312-1 |
Show 16 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES for SAP 15 SP5 | kernel-default-base | 5.14.21-150500.55.113.1.150500.6.53.1 | SUSE-SU-2025:02264-1 |
| SLES for SAP 15 SP5 | kernel-docs +4 | 5.14.21-150500.55.113.1 | SUSE-SU-2025:02264-1 |
| SLES for SAP 15 SP4 | kernel-default +1 | 5.14.21-150400.24.170.2 | SUSE-SU-2025:02537-1 |
| SLES for SAP 15 SP4 | kernel-default-base | 5.14.21-150400.24.170.2.150400.24.86.2 | SUSE-SU-2025:02537-1 |
| SLES for SAP 15 SP4 | kernel-docs +2 | 5.14.21-150400.24.170.1 | SUSE-SU-2025:02537-1 |
| SLES for SAP 15 SP3 | kernel-default-base | 5.3.18-150300.59.211.1.150300.18.126.1 | SUSE-SU-2025:02308-1 |
| SLES for SAP 15 SP3 | kernel-docs +4 | 5.3.18-150300.59.211.1 | SUSE-SU-2025:02308-1 |
| SLES for SAP 15 SP3 | kernel-obs-build | 5.3.18-150300.59.212.1 | SUSE-SU-2025:02308-1 |
| SLE Micro 5.5 | kernel-default-base | 5.14.21-150500.55.113.1.150500.6.53.1 | SUSE-SU-2025:02264-1 |
| SLE Micro 5.5 | kernel-rt | 5.14.21-150500.13.100.2 | SUSE-SU-2025:02321-1 |
| SLE Micro 5.5 | kernel-source +1 | 5.14.21-150500.55.113.1 | SUSE-SU-2025:02264-1 |
| SLE Micro 5.5 | kernel-source-rt | 5.14.21-150500.13.100.1 | SUSE-SU-2025:02321-1 |
| SLE Micro 5.4 | kernel-default | 5.14.21-150400.24.170.2 | SUSE-SU-2025:02537-1 |
| SLE Micro 5.4 | kernel-default-base | 5.14.21-150400.24.170.2.150400.24.86.2 | SUSE-SU-2025:02537-1 |
| SLE Micro 5.4 | kernel-rt +1 | 5.14.21-150400.15.124.1 | SUSE-SU-2025:02322-1 |
| SLE Micro 5.3 | kernel-default | 5.14.21-150400.24.170.2 | SUSE-SU-2025:02537-1 |
| SLE Micro 5.3 | kernel-default-base | 5.14.21-150400.24.170.2.150400.24.86.2 | SUSE-SU-2025:02537-1 |
| SLE Micro 5.3 | kernel-rt +1 | 5.14.21-150400.15.124.1 | SUSE-SU-2025:02322-1 |
| SLE Micro 5.2 | kernel-default | 5.3.18-150300.59.211.1 | SUSE-SU-2025:02308-1 |
| SLE Micro 5.2 | kernel-default-base | 5.3.18-150300.59.211.1.150300.18.126.1 | SUSE-SU-2025:02308-1 |
| SLE Micro 5.2 | kernel-rt +1 | 5.3.18-150300.214.1 | SUSE-SU-2025:02320-1 |
| SLE Micro 5.1 | kernel-default | 5.3.18-150300.59.211.1 | SUSE-SU-2025:02308-1 |
| SLE Micro 5.1 | kernel-default-base | 5.3.18-150300.59.211.1.150300.18.126.1 | SUSE-SU-2025:02308-1 |
| SLE Micro 5.1 | kernel-rt +1 | 5.3.18-150300.214.1 | SUSE-SU-2025:02320-1 |
| SLE Live Patching 15 SP5 | kernel-default | 5.14.21-150500.55.113.1 | SUSE-SU-2025:02264-1 |
| SLE Live Patching 15 SP5 | kernel-livepatch-SLE15-SP5_Update_28 | 1-150500.11.3.1 | SUSE-SU-2025:02264-1 |
| SLE Live Patching 15 SP3 | kernel-default | 5.3.18-150300.59.211.1 | SUSE-SU-2025:02308-1 |
| SLE Live Patching 15 SP3 | kernel-livepatch-SLE15-SP3_Update_59 | 1-150300.7.3.1 | SUSE-SU-2025:02308-1 |
| SLE Live Patching 12 SP5 | kernel-default | 4.12.14-122.266.1 | SUSE-SU-2025:02334-1 |
| SLE Live Patching 12 SP5 | kgraft-patch-SLE12-SP5_Update_70 | 1-8.5.1 | SUSE-SU-2025:02334-1 |
| SLE HPC 15 SP5 | kernel-64kb +5 | 5.14.21-150500.55.113.1 | SUSE-SU-2025:02264-1 |
| SLE HPC 15 SP5 | kernel-default-base | 5.14.21-150500.55.113.1.150500.6.53.1 | SUSE-SU-2025:02264-1 |
| SLE HPC 15 SP4 | kernel-64kb +2 | 5.14.21-150400.24.170.2 | SUSE-SU-2025:02537-1 |
| SLE HPC 15 SP4 | kernel-default-base | 5.14.21-150400.24.170.2.150400.24.86.2 | SUSE-SU-2025:02537-1 |
| SLE HPC 15 SP4 | kernel-docs +2 | 5.14.21-150400.24.170.1 | SUSE-SU-2025:02537-1 |
| SUSE Manager Server 4.3 | kernel-default +1 | 5.14.21-150400.24.170.2 | SUSE-SU-2025:02537-1 |
| SUSE Manager Server 4.3 | kernel-default-base | 5.14.21-150400.24.170.2.150400.24.86.2 | SUSE-SU-2025:02537-1 |
| SUSE Manager Server 4.3 | kernel-syms +1 | 5.14.21-150400.24.170.1 | SUSE-SU-2025:02537-1 |
| SUSE Manager Proxy 4.3 | kernel-default | 5.14.21-150400.24.170.2 | SUSE-SU-2025:02537-1 |
| SUSE Manager Proxy 4.3 | kernel-default-base | 5.14.21-150400.24.170.2.150400.24.86.2 | SUSE-SU-2025:02537-1 |
| SUSE Manager Proxy 4.3 | kernel-syms +1 | 5.14.21-150400.24.170.1 | SUSE-SU-2025:02537-1 |
| SUSE Enterprise Storage 7.1 | kernel-64kb +5 | 5.3.18-150300.59.211.1 | SUSE-SU-2025:02308-1 |
| SUSE Enterprise Storage 7.1 | kernel-default-base | 5.3.18-150300.59.211.1.150300.18.126.1 | SUSE-SU-2025:02308-1 |
| SUSE Enterprise Storage 7.1 | kernel-obs-build | 5.3.18-150300.59.212.1 | SUSE-SU-2025:02308-1 |
Amazon Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Amazon Linux 2 | kernel-livepatch-4.14.318-240.529 | 1.0-0.amzn2 | ALAS2-2023-2100 |
| Amazon Linux 2 | perf +8 | 4.14.318-240.529.amzn2 | ALAS2-2023-2100 |
Advisories 10
- WID-SEC-2025-1350 Linux Kernel: Mehrere Schwachstellen ermöglichen Denial of Service BSI CERT-Bund (WID) · Nov 12, 2026
- SUSE-SU-2025:02320-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:02321-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:02334-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:02322-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- ALAS2-2023-2100 Important: kernel security update (Amazon Linux 2) Amazon Linux Security Center (ALAS) · Feb 8, 2026
- SUSE-SU-2025:02537-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 5, 2026
- SUSE-SU-2025:02312-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2025:02264-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2025:02308-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Jul 15, 2025
References
- https://git.kernel.org/stable/c/ff0e8ed8dfb584575cffc1561f17a1d094e8565b
- https://git.kernel.org/stable/c/dcb11fe0a0a9cca2b7425191b9bf30dc29f2ad0f
- https://git.kernel.org/stable/c/8e546674031fc1576da501e27a8fd165222e5a37
- https://git.kernel.org/stable/c/b60e862e133f646f19023ece1d476d630a660de1
- https://git.kernel.org/stable/c/78f8c2370e3d33e35f23bdc648653d779aeacb6e
- https://git.kernel.org/stable/c/5d741afed0bac206640cc64d77b97853283cf719
- https://git.kernel.org/stable/c/85f02d6c856b9f3a0acf5219de6e32f58b9778eb