Vulnerability · Published Dec 24, 2025 · Assigned by Linux

CVE-2023-54121btrfs: fix incorrect splitting in btrfs_drop_extent_map_range

High 7.8

In plain English

A high-severity security flaw in Linux from Linux. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.2% (higher than 6% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS 3.1)7.8High
Exploit odds (30 days)0.2%top 94.4% of all CVEs
Exploited in the wildNo reportsnot in CISA KEV
Attack toolingNoneno public tooling known

Official description

In the Linux kernel, the following vulnerability has been resolved: btrfs: fix incorrect splitting in btrfs_drop_extent_map_range In production we were seeing a variety of WARN_ON()'s in the extent_map code, specifically in btrfs_drop_extent_map_range() when we have to call add_extent_mapping() for our second split. Consider the following extent map layout PINNED [0 16K) [32K, 48K) and then we call btrfs_drop_extent_map_range for [0, 36K), with skip_pinned == true. The initial loop will have start = 0 end = 36K len = 36K we will find the [0, 16k) extent, but since we are pinned we will skip it, which has this code start = em_end; if (end != (u64)-1) len = start + len - em_end; em_end here is 16K, so now the values are start = 16K len = 16K + 36K - 16K = 36K len should instead be 20K. This is a problem when we find the next extent at [32K, 48K), we need to split this extent to leave [36K, 48k), however the code for the split looks like this split->start = start + len; split->len = em_end - (start + len); In this case we have em_end = 48K split->start = 16K + 36K // this should be 16K + 20K split->len = 48K - (16K + 36K) // this overflows as 16K + 36K is 52K and now we have an invalid extent_map in the tree that potentially overlaps other entries in the extent map. Even in the non-overlapping case we will have split->start set improperly, which will cause problems with any block related calculations. We don't actually need len in this loop, we can simply use end as our end point, and only adjust start up when we find a pinned extent we need to skip. Adjust the logic to do this, which keeps us from inserting an invalid extent map. We only skip_pinned in the relocation case, so this is relatively rare, except in the case where you are running relocation a lot, which can happen with auto relocation on.

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
Debian:12linux6.1.52-1DEBIAN-CVE-2023-54121
Debian:13linux6.4.13-1DEBIAN-CVE-2023-54121
Debian:14linux6.4.13-1DEBIAN-CVE-2023-54121
Ubuntu:22.04:LTSlinuxno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-allwinner-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-awsno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-aws-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-aws-6.2no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-aws-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-azureno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-azure-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-azure-6.11no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-azure-6.2no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-azure-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-azure-fdeno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-azure-fde-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-azure-fde-6.2no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-gcpno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-gcp-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-gcp-6.11no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-gcp-6.2no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-gcp-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-gkeno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-gkeopno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-hwe-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-hwe-6.11no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-hwe-6.2no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-hwe-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-ibmno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-intel-iot-realtimeno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-intel-iotgno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-kvmno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-lowlatencyno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-lowlatency-hwe-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-lowlatency-hwe-6.11no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.2no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-nvidiano fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-nvidia-6.11no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-nvidia-6.2no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-nvidia-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-nvidia-tegrano fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-nvidia-tegra-igxno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-oem-5.17no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-oem-6.0no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-oem-6.1no fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-oem-6.11no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-oem-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-oem-6.8no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-oracleno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-oracle-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-raspino fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-raspi-realtimeno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-riscv-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:24.04:LTSlinux-riscv-6.14no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-riscv-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-starfive-5.19no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-starfive-6.2no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-starfive-6.5no fix listedUBUNTU-CVE-2023-54121
Ubuntu:22.04:LTSlinux-xilinx-zynqmpno fix listedUBUNTU-CVE-2023-54121

Affected products (as reported)

VendorProductVersions
Linux Linux 55ef68990029fcd8d04d42fc184aa7fb18cf309e – before 9f68e2105dd96cf0fafffffafb2337fbd0fbae1f55ef68990029fcd8d04d42fc184aa7fb18cf309e – before b43a4c99d878cf5e59040e45c96bb0a8358bfb3b55ef68990029fcd8d04d42fc184aa7fb18cf309e – before c962098ca4af146f2625ed64399926a098752c9cc87afd35a28b2661a2626a1b28e9fd69adcad9f92.6.32.19 – before 2.6.33
Linux Linux 2.6.33

References