Skip to content
OpenAdvisories
High · 7.8 CVE-2022-48733 EUVD-2022-53612GHSA-grhv-62hf-9jg3

btrfs: fix use-after-free after failure to create a snapshot

Published Jun 20, 2024 · Updated Aug 5, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.4 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-fips Package: linux-aws-hwe Package: linux-azure Package: linux-azure-4.15 Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.4 Package: linux-azure-5.8 Package: linux-azure-6.2 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-azure-fips Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-4.15 Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.4 Package: linux-gcp-5.8 Package: linux-gcp-6.2 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.19 Package: linux-hwe-5.4 Package: linux-hwe-5.8 Package: linux-hwe-6.2 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.4 Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg-5.15 Package: linux-iot Package: linux-kvm Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.2 Package: linux-lts-xenial Package: linux-nvidia-6.2 Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.3 Package: linux-oracle-5.4 Package: linux-oracle-5.8 Package: linux-raspi Package: linux-raspi-5.4 Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-vmware Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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

btrfs: fix use-after-free after failure to create a snapshot

At ioctl.c:create_snapshot(), we allocate a pending snapshot structure and
then attach it to the transaction's list of pending snapshots. After that
we call btrfs_commit_transaction(), and if that returns an error we jump
to 'fail' label, where we kfree() the pending snapshot structure. This can
result in a later use-after-free of the pending snapshot:

1) We allocated the pending snapshot and added it to the transaction's
list of pending snapshots;

2) We call btrfs_commit_transaction(), and it fails either at the first
call to btrfs_run_delayed_refs() or btrfs_start_dirty_block_groups().
In both cases, we don't abort the transaction and we release our
transaction handle. We jump to the 'fail' label and free the pending
snapshot structure. We return with the pending snapshot still in the
transaction's list;

3) Another task commits the transaction. This time there's no error at
all, and then during the transaction commit it accesses a pointer
to the pending snapshot structure that the snapshot creation task
has already freed, resulting in a user-after-free.

This issue could actually be detected by smatch, which produced the
following warning:

fs/btrfs/ioctl.c:843 create_snapshot() warn: '&pending_snapshot->list' not removed from list

So fix this by not having the snapshot creation ioctl directly add the
pending snapshot to the transaction's list. Instead add the pending
snapshot to the transaction handle, and then at btrfs_commit_transaction()
we add the snapshot to the list only when we can guarantee that any error
returned after that point will result in a transaction abort, in which
case the ioctl code can safely free the pending snapshot and no one can
access it anymore.

Affected products

VendorProductAffectedFixed
Linux Linux 3.7 5.10.226

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.

ReleasePackageFixed inAdvisory
Debian 14 linux 5.16.10-1 —
Debian 13 linux 5.16.10-1 —
Debian 12 linux 5.16.10-1 —
Debian 11 linux 5.10.226-1 DLA-3912-1
ReleasePackageFixed inAdvisory
Ubuntu 24.04 LTS linux-raspi-realtime No fix yet —
Ubuntu 22.04 LTS linux-riscv +22 No fix yet —
Ubuntu 20.04 LTS linux 5.4.0-202.222 USN-7159-1
Ubuntu 20.04 LTS linux-aws 5.4.0-1136.146 USN-7159-2
Ubuntu 20.04 LTS linux-azure 5.4.0-1142.149 USN-7195-1
Ubuntu 20.04 LTS linux-bluefield 5.4.0-1096.103 USN-7159-3
Ubuntu 20.04 LTS linux-gcp 5.4.0-1140.149 USN-7159-1
Ubuntu 20.04 LTS linux-gke +27 No fix yet —
Ubuntu 20.04 LTS linux-ibm 5.4.0-1083.88 USN-7159-1
Ubuntu 20.04 LTS linux-intel-iotg-5.15 5.15.0-1008.11~20.04.1 —
Ubuntu 20.04 LTS linux-iot 5.4.0-1045.46 USN-7159-4
Ubuntu 20.04 LTS linux-kvm 5.4.0-1124.132 USN-7159-1
Ubuntu 20.04 LTS linux-oracle 5.4.0-1135.144 USN-7159-3
Ubuntu 20.04 LTS linux-raspi 5.4.0-1120.132 USN-7159-1
Ubuntu 20.04 LTS linux-xilinx-zynqmp 5.4.0-1055.59 USN-7159-1
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Show 9 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu Pro FIPS 20.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS 16.04 LTS linux-fips No fix yet —
Ubuntu Pro FIPS-updates 20.04 LTS linux-aws-fips 5.4.0-1136.146+fips1 —
Ubuntu Pro FIPS-updates 20.04 LTS linux-azure-fips 5.4.0-1142.149+fips1 —
Ubuntu Pro FIPS-updates 20.04 LTS linux-fips 5.4.0-1110.120 —
Ubuntu Pro FIPS-updates 20.04 LTS linux-gcp-fips 5.4.0-1140.149+fips1 —
Ubuntu Pro FIPS-updates 18.04 LTS linux-aws-fips 4.15.0-2113.119 —
Ubuntu Pro FIPS-updates 18.04 LTS linux-azure-fips 4.15.0-2092.98 —
Ubuntu Pro FIPS-updates 18.04 LTS linux-fips 4.15.0-1129.140 —
Ubuntu Pro FIPS-updates 18.04 LTS linux-gcp-fips 4.15.0-2076.81 —
Ubuntu Pro FIPS-updates 16.04 LTS linux-fips 4.4.0-1107.114 —
Ubuntu Pro 18.04 LTS linux 4.15.0-231.243 USN-7121-1
Ubuntu Pro 18.04 LTS linux-aws 4.15.0-1175.188 USN-7121-1
Ubuntu Pro 18.04 LTS linux-aws-5.4 5.4.0-1136.146~18.04.1 USN-7159-2
Ubuntu Pro 18.04 LTS linux-azure-4.15 4.15.0-1183.198 USN-7121-1
Ubuntu Pro 18.04 LTS linux-azure-5.4 5.4.0-1142.149~18.04.1 USN-7195-2
Ubuntu Pro 18.04 LTS linux-gcp-4.15 4.15.0-1168.185 USN-7121-1
Ubuntu Pro 18.04 LTS linux-gcp-5.4 5.4.0-1140.149~18.04.1 USN-7159-1
Ubuntu Pro 18.04 LTS linux-hwe-5.4 5.4.0-202.222~18.04.1 USN-7159-1
Ubuntu Pro 18.04 LTS linux-ibm-5.4 5.4.0-1083.88~18.04.1 USN-7159-1
Ubuntu Pro 18.04 LTS linux-kvm 4.15.0-1158.163 USN-7121-1
Ubuntu Pro 18.04 LTS linux-oracle 4.15.0-1137.148 USN-7121-1
Ubuntu Pro 18.04 LTS linux-oracle-5.4 5.4.0-1135.144~18.04.1 USN-7159-3
Ubuntu Pro 18.04 LTS linux-raspi-5.4 5.4.0-1120.132~18.04.1 USN-7159-5
Ubuntu Pro 16.04 LTS linux 4.4.0-261.295 USN-7148-1
Ubuntu Pro 16.04 LTS linux-aws 4.4.0-1176.191 USN-7148-1
Ubuntu Pro 16.04 LTS linux-aws-hwe 4.15.0-1175.188~16.04.1 USN-7121-1
Ubuntu Pro 16.04 LTS linux-azure 4.15.0-1183.198~16.04.1 USN-7121-1
Ubuntu Pro 16.04 LTS linux-gcp 4.15.0-1168.185~16.04.1 USN-7121-1
Ubuntu Pro 16.04 LTS linux-hwe 4.15.0-231.243~16.04.1 USN-7121-1
Ubuntu Pro 16.04 LTS linux-kvm 4.4.0-1139.149 USN-7148-1
Ubuntu Pro 16.04 LTS linux-oracle 4.15.0-1137.148~16.04.1 USN-7121-3
Ubuntu Pro 14.04 LTS linux No fix yet —
Ubuntu Pro 14.04 LTS linux-aws 4.4.0-1138.144 USN-7148-1
Ubuntu Pro 14.04 LTS linux-azure 4.15.0-1183.198~14.04.1 USN-7121-2
Ubuntu Pro 14.04 LTS linux-lts-xenial 4.4.0-261.295~14.04.1 USN-7148-1
ReleasePackageFixed inAdvisory
SLES 15 SP5 kernel-64kb +5 5.14.21-150500.55.73.1 SUSE-SU-2024:2939-1
SLES 15 SP5 kernel-azure +2 5.14.21-150500.33.60.1 SUSE-SU-2024:2372-1
SLES 15 SP5 kernel-default-base 5.14.21-150500.55.73.1.150500.6.33.8 SUSE-SU-2024:2939-1
SLES 15 SP5 kernel-docs 5.14.21-150500.55.73.2 SUSE-SU-2024:2939-1
SLES 12 SP5 kernel-azure +2 4.12.14-16.191.1 SUSE-SU-2024:2360-1
SLES 12 SP5 kernel-docs +4 4.12.14-122.222.1 SUSE-SU-2024:2561-1
Show 6 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 12 SP5 kernel-azure +2 4.12.14-16.191.1 SUSE-SU-2024:2360-1
SLES for SAP 12 SP5 kernel-syms +2 4.12.14-122.222.1 SUSE-SU-2024:2561-1
SLE Real Time 12 SP5 kernel-rt +3 4.12.14-10.191.1 SUSE-SU-2024:2381-1
SLE Micro 5.5 kernel-default 5.14.21-150500.55.73.1 SUSE-SU-2024:2939-1
SLE Micro 5.5 kernel-default-base 5.14.21-150500.55.73.1.150500.6.33.8 SUSE-SU-2024:2939-1
SLE Micro 5.5 kernel-rt +1 5.14.21-150500.13.61.1 SUSE-SU-2024:2394-1
SLE Live Patching 15 SP5 kernel-default 5.14.21-150500.55.73.1 SUSE-SU-2024:2939-1
SLE Live Patching 15 SP5 kernel-livepatch-SLE15-SP5_Update_17 +1 1-150500.11.3.1 SUSE-SU-2024:2939-1, SUSE-SU-2024:2394-1
SLE Live Patching 12 SP5 kernel-default 4.12.14-122.222.1 SUSE-SU-2024:2561-1
SLE Live Patching 12 SP5 kgraft-patch-SLE12-SP5_Update_58 1-8.3.1 SUSE-SU-2024:2561-1
SUSE Real Time Module 15 SP5 kernel-rt +3 5.14.21-150500.13.61.1 SUSE-SU-2024:2394-1
ReleasePackageFixed inAdvisory
openSUSE Leap 15.5 dtb-aarch64 +9 5.14.21-150500.55.73.1 SUSE-SU-2024:2939-1
openSUSE Leap 15.5 kernel-azure +2 5.14.21-150500.33.60.1 SUSE-SU-2024:2372-1
openSUSE Leap 15.5 kernel-default-base 5.14.21-150500.55.73.1.150500.6.33.8 SUSE-SU-2024:2939-1
openSUSE Leap 15.5 kernel-docs 5.14.21-150500.55.73.2 SUSE-SU-2024:2939-1
openSUSE Leap 15.5 kernel-rt +3 5.14.21-150500.13.61.1 SUSE-SU-2024:2394-1
Show 1 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
openSUSE Leap Micro 5.5 kernel-default 5.14.21-150500.55.73.1 SUSE-SU-2024:2939-1
openSUSE Leap Micro 5.5 kernel-default-base 5.14.21-150500.55.73.1.150500.6.33.8 SUSE-SU-2024:2939-1

Advisories 19

References