CVE-2025-37931

MEDIUMNVD 5.55.5
EchelonGraph scoreMEDIUM confidence

Score 5.5 from GitHub Security Advisory published 2025-05-20. NVD baseline CVSS 5.5; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, nvd
Trending — 4 sources updated this week
5.5EG
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • Lower severity and no public exploit yet
CISA-KEV: Not listedEPSS PROB: 0%CVSS: 5.5Exploit: None knownExposed: 0

A fix is available — apply it.

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

btrfs: adjust subpage bit start based on sectorsize

When running machines with 64k page size and a 16k nodesize we started seeing tree log corruption in production. This turned out to be because we were not writing out dirty blocks sometimes, so this in fact affects all metadata writes.

When writing out a subpage EB we scan the subpage bitmap for a dirty range. If the range isn't dirty we do

bit_start++;

to move onto the next bit. The problem is the bitmap is based on the number of sectors that an EB has. So in this case, we have a 64k pagesize, 16k nodesize, but a 4k sectorsize. This means our bitmap is 4 bits for every node. With a 64k page size we end up with 4 nodes per page.

To make this easier this is how everything looks

[0 16k 32k 48k ] logical address [0 4 8 12 ] radix tree offset [ 64k page ] folio [ 16k eb ][ 16k eb ][ 16k eb ][ 16k eb ] extent buffers [ | | | | | | | | | | | | | | | | ] bitmap

Now we use all of our addressing based on fs_info->sectorsize_bits, so as you can see the above our 16k eb->start turns into radix entry 4.

When we find a dirty range for our eb, we correctly do bit_start += sectors_per_node, because if we start at bit 0, the next bit for the next eb is 4, to correspond to eb->start 16k.

However if our range is clean, we will do bit_start++, which will now put us offset from our radix tree entries.

In our case, assume that the first time we check the bitmap the block is not dirty, we increment bit_start so now it == 1, and then we loop around and check again. This time it is dirty, and we go to find that start using the following equation

start = folio_start + bit_start * fs_info->sectorsize;

so in the case above, eb->start 0 is now dirty, and we calculate start as

0 + 1 * fs_info->sectorsize = 4096 4096 >> 12 = 1

Now we're looking up the radix tree for 1, and we won't find an eb. What's worse is now we're using bit_start == 1, so we do bit_start += sectors_per_node, which is now 5. If that eb is dirty we will run into the same thing, we will look at an offset that is not populated in the radix tree, and now we're skipping the writeout of dirty extent buffers.

The best fix for this is to not use sectorsize_bits to address nodes, but that's a larger change. Since this is a fs corruption problem fix it simply by always using sectors_per_node to increment the start bit.

CVSS v3
5.5
EG Score
5.5(medium)
EG Risk
29(Track)
EG Risk 29/100SSVC: Track

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity55% × 45%
Exploitation0% × 40%
Automatability30% × 15%
Action: Routine — remediate on your standard cadence.
EPSS PROB
0%
EPSS %ILE
7%
KEV
Not listed

Published

May 20, 2025

Last Modified

August 5, 2026

Advisory Details (7)

Auto-updated Aug 2, 2026
Patch available.
generic Patch Available

[SECURITY] [DLA 4328-1] linux-6.1 security update

https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html
generic

btrfs: adjust subpage bit start based on sectorsize - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/e08e49d986f82c30f42ad0ed43ebbede1e1e3739
generic

btrfs: adjust subpage bit start based on sectorsize - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/b80db09b614cb7edec5bada1bc7c7b0eb3b453ea
generic

btrfs: adjust subpage bit start based on sectorsize - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/977849e8acd2466ac3cb49e04a3ecc73837f6b90
generic

btrfs: adjust subpage bit start based on sectorsize - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/5111b148360f50cac9abbae8fca44cc0ac4bf9bf
generic

btrfs: adjust subpage bit start based on sectorsize - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/396f4002710030ea1cfd4c789ebaf0a6969ab34f

Vendor Advisories for CVE-2025-37931(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Patch Availability(23)

Vendor / EcosystemFixed in / PatchReleasedSource
ubuntulinux-virtual-6.8 (6.8.0-100.100) @ noble2026-05-21ubuntu
ubuntulinux-tools-gcp-edge (6.8.0-1047.50~22.04.2) @ jammy2026-05-21ubuntu
ubuntulinux-tools-realtime-6.8.1 (6.8.1-1041.42) @ noble2026-05-21ubuntu
ubuntulinux-tools-fips-6.8 (6.8.0-100.100+fips1) @ noble2026-05-21ubuntu
ubuntulinux-tools-realtime-hwe-22.04 (6.8.1-1041.42~22.04.1) @ jammy2026-05-21ubuntu
ubuntulinux-virtual-hwe-24.04-edge (6.14.0-24.24) @ plucky2026-05-21ubuntu
ubuntulinux-tools-oem-6.14 (6.14.0-1007.7) @ noble2026-05-21ubuntu
ubuntulinux-tools-aws-edge (6.14.0-1009.9~24.04.1) @ noble2026-05-21ubuntu
ubuntulinux-tools-aws-64k-6.14 (6.14.0-1009.9) @ plucky2026-05-21ubuntu
ubuntulinux-tools-oracle-64k-6.14 (6.14.0-1009.9) @ plucky2026-05-21ubuntu
ubuntulinux-tools-azure-6.14 (6.14.0-1010.10) @ plucky2026-05-21ubuntu
ubuntulinux-tools-oracle-lts-24.04 (6.8.0-1043.44) @ noble2026-05-21ubuntu
ubuntulinux-tools-azure-lts-24.04 (6.8.0-1046.52) @ noble2026-05-21ubuntu
ubuntulinux-tools-azure-fips-6.8 (6.8.0-1046.52+fips1) @ noble2026-05-21ubuntu
ubuntulinux-tools-nvidia-lowlatency-64k-6.8 (6.8.0-1046.49.1) @ noble2026-05-21ubuntu
ubuntulinux-xilinx-zynqmp (6.8.0.1023.24) @ noble2026-05-21ubuntu
ubuntulinux-virtual-hwe-22.04-edge (6.8.0-100.100~22.04.1) @ jammy2026-05-21ubuntu
ubuntulinux-tools-azure-edge (6.8.0-1051.57~22.04.1) @ jammy2026-05-21ubuntu
ubuntulinux-tools-gke-64k-6.8 (6.8.0-1043.48) @ noble2026-05-21ubuntu
ubuntulinux-tools-lowlatency-hwe-20.04-edge (6.8.0-100.100.1) @ noble2026-05-21ubuntu
ubuntulinux-tools-ibm-edge (6.8.0-1044.44~22.04.1) @ jammy2026-05-21ubuntu
ubuntulinux-tools-gcp-fips-6.8 (6.8.0-1047.50+fips1) @ noble2026-05-21ubuntu
linuxKernel @ 6.1.151osv

Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.

Additional Vendor Advisories

(22)

Data Freshness Timeline

(refreshed 9× in last 7d / 46× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

Showing the most recent 100 of 142 total refreshes for this CVE.

  1. 2026-08-07 16:26 UTCEPSS rescore
  2. 2026-08-06 13:46 UTCEPSS rescore
  3. 2026-08-05 13:55 UTCEG score recompute
  4. 2026-08-05 13:55 UTCVendor advisory
  5. 2026-08-05 13:55 UTCGHSA enrichment
  6. 2026-08-04 15:09 UTCEPSS rescore
  7. 2026-08-04 10:37 UTCEPSS rescore
  8. 2026-08-03 10:35 UTCEPSS rescore
  9. 2026-08-02 02:26 UTCEPSS rescore
  10. 2026-08-01 04:15 UTCEPSS rescore
  11. 2026-07-30 16:27 UTCEPSS rescore
  12. 2026-07-30 07:10 UTCEG score recompute
  13. 2026-07-30 07:10 UTCVendor advisory
  14. 2026-07-30 07:10 UTCGHSA enrichment
  15. 2026-07-30 01:29 UTCEPSS rescore
  16. 2026-07-28 15:35 UTCEPSS rescore
  17. 2026-07-27 19:54 UTCOSV refresh
  18. 2026-07-26 14:54 UTCEPSS rescore
  19. 2026-07-25 14:17 UTCEPSS rescore
  20. 2026-07-25 14:17 UTCEPSS rescore
  21. 2026-07-24 14:17 UTCEPSS rescore
  22. 2026-07-23 02:54 UTCEG score recompute
  23. 2026-07-22 14:07 UTCEPSS rescore
  24. 2026-07-22 14:07 UTCEPSS rescore
  25. 2026-07-21 15:24 UTCEPSS rescore
Show 75 more
  1. 2026-07-20 17:07 UTCEPSS rescore
  2. 2026-07-19 14:30 UTCEPSS rescore
  3. 2026-07-19 14:30 UTCEPSS rescore
  4. 2026-07-19 02:28 UTCEPSS rescore
  5. 2026-07-19 02:28 UTCEPSS rescore
  6. 2026-07-18 10:04 UTCEPSS rescore
  7. 2026-07-18 10:04 UTCEPSS rescore
  8. 2026-07-16 17:02 UTCEPSS rescore
  9. 2026-07-15 16:57 UTCEPSS rescore
  10. 2026-07-15 16:57 UTCEPSS rescore
  11. 2026-07-15 01:59 UTCEPSS rescore
  12. 2026-07-15 01:59 UTCEPSS rescore
  13. 2026-07-13 22:29 UTCEPSS rescore
  14. 2026-07-13 22:29 UTCEPSS rescore
  15. 2026-07-13 06:12 UTCEPSS rescore
  16. 2026-07-12 05:46 UTCEPSS rescore
  17. 2026-07-11 08:27 UTCEPSS rescore
  18. 2026-07-11 08:27 UTCEPSS rescore
  19. 2026-07-10 12:22 UTCOSV refresh
  20. 2026-07-09 19:09 UTCEPSS rescore
  21. 2026-07-09 19:09 UTCEPSS rescore
  22. 2026-07-06 16:27 UTCEPSS rescore
  23. 2026-07-06 16:27 UTCEPSS rescore
  24. 2026-07-06 02:23 UTCEPSS rescore
  25. 2026-07-05 02:30 UTCEPSS rescore
  26. 2026-07-04 06:30 UTCEPSS rescore
  27. 2026-07-01 15:06 UTCEPSS rescore
  28. 2026-07-01 15:06 UTCEPSS rescore
  29. 2026-06-30 23:22 UTCEPSS rescore
  30. 2026-06-30 23:22 UTCEPSS rescore
  31. 2026-06-29 14:06 UTCEPSS rescore
  32. 2026-06-29 14:06 UTCEPSS rescore
  33. 2026-06-28 14:07 UTCEPSS rescore
  34. 2026-06-28 14:07 UTCEPSS rescore
  35. 2026-06-28 04:55 UTCEPSS rescore
  36. 2026-06-28 04:55 UTCEPSS rescore
  37. 2026-06-27 03:08 UTCEPSS rescore
  38. 2026-06-27 03:08 UTCEPSS rescore
  39. 2026-06-25 13:49 UTCEPSS rescore
  40. 2026-06-25 13:49 UTCEPSS rescore
  41. 2026-06-24 14:04 UTCEPSS rescore
  42. 2026-06-24 14:04 UTCEPSS rescore
  43. 2026-06-23 21:32 UTCEPSS rescore
  44. 2026-06-23 21:32 UTCEPSS rescore
  45. 2026-06-22 14:25 UTCEPSS rescore
  46. 2026-06-22 14:25 UTCEPSS rescore
  47. 2026-06-21 21:43 UTCOSV refresh
  48. 2026-06-21 14:56 UTCEPSS rescore
  49. 2026-06-21 14:56 UTCEPSS rescore
  50. 2026-06-21 01:59 UTCEPSS rescore
  51. 2026-06-21 01:59 UTCEPSS rescore
  52. 2026-06-19 19:25 UTCEPSS rescore
  53. 2026-06-19 19:25 UTCEPSS rescore
  54. 2026-06-18 17:52 UTCEPSS rescore
  55. 2026-06-18 17:52 UTCEPSS rescore
  56. 2026-06-17 17:52 UTCEPSS rescore
  57. 2026-06-16 17:52 UTCEPSS rescore
  58. 2026-06-16 17:52 UTCEPSS rescore
  59. 2026-06-14 23:17 UTCEPSS rescore
  60. 2026-06-13 23:00 UTCEPSS rescore
  61. 2026-06-12 23:11 UTCEPSS rescore
  62. 2026-06-11 14:00 UTCEPSS rescore
  63. 2026-06-10 22:18 UTCEPSS rescore
  64. 2026-06-10 13:22 UTCEPSS rescore
  65. 2026-06-08 14:16 UTCEPSS rescore
  66. 2026-06-08 14:16 UTCEPSS rescore
  67. 2026-06-07 15:24 UTCEPSS rescore
  68. 2026-06-06 13:47 UTCEPSS rescore
  69. 2026-06-06 13:47 UTCEPSS rescore
  70. 2026-06-05 22:46 UTCEPSS rescore
  71. 2026-06-05 22:46 UTCEPSS rescore
  72. 2026-06-05 06:10 UTCEPSS rescore
  73. 2026-06-05 06:10 UTCEPSS rescore
  74. 2026-06-04 13:12 UTCEPSS rescore
  75. 2026-06-04 13:12 UTCEPSS rescore

Frequently asked(5)

What is CVE-2025-37931?
CVE-2025-37931 is a medium vulnerability published on May 20, 2025. In the Linux kernel, the following vulnerability has been resolved: btrfs: adjust subpage bit start based on sectorsize When running machines with 64k page size and a 16k nodesize we started seeing tree log corruption in production. This turned out to be because we were not writing out dirty blocks…
When was CVE-2025-37931 disclosed?
CVE-2025-37931 was first published in the National Vulnerability Database on May 20, 2025, with the most recent update on August 5, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2025-37931 actively exploited?
CVE-2025-37931 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 0% probability of exploitation in the next 30 days, which ranks it in the top 92.7% of all scored CVEs.
What is the CVSS score of CVE-2025-37931?
CVE-2025-37931 has a CVSS v3 base score of 5.5 (NVD).
How do I remediate CVE-2025-37931?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2025-37931, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2025-37931

Explore →

Is Your Infrastructure Affected by CVE-2025-37931?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.