CVE-2026-74365

nvdimm/btt: Handle preemption in BTT lane acquisition

State
Published
Severity
7.3 High
Published
Aug 15, 2026
Updated
Oct 16, 2026
Reserved
Aug 15, 2026

Read the record on cve.org

Description

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

nvdimm/btt: Handle preemption in BTT lane acquisition

BTT lanes serialize access to per-lane metadata and workspace state during BTT I/O. The btt-check unit test reports data mismatches during BTT writes due to a race in lane acquisition that can lead to silent data corruption.

The existing lane model uses a spinlock together with a per-CPU recursion count. That recursion model stopped being valid after BTT lanes became preemptible: another task can run on the same CPU, observe a non-zero recursion count, bypass locking, and use the same lane concurrently.

BTT lanes are also held across arena_write_bytes() calls. That path reaches nsio_rw_bytes(), which flushes writes with nvdimm_flush(). Some provider flush callbacks can sleep, making a spinlock the wrong primitive for the lane lifetime.

Replace the spinlock-based recursion model with a dynamically allocated per-lane mutex array and take the lane lock unconditionally.

Add might_sleep() to catch any future atomic-context caller.

Found with the ndctl unit test btt-check.sh.

Scores

CVSSScoreVectorSource
3.17.3 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:LLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • f23859748e3d530217b197e146a9ac84faf0a282 to before fd7a97b2514cfc4b4cc067a27dd39bde2a8b1735Affected
  • 6f50b414f1a0d790f11a6438a3ad6d0577eb2c18 to before 73e35c1bdfa160b41fdbe204e02325f0687de506Affected
  • 36c75ce3bd299878fd9b238e9803d3817ddafbf3 to before 417918783bcfe0be135019df16a267b3af442efdAffected
  • 36c75ce3bd299878fd9b238e9803d3817ddafbf3 to before 5c53406098b599c420b031e6ec5ba8a2f3794c50Affected
  • 36c75ce3bd299878fd9b238e9803d3817ddafbf3 to before 4eafa810b042d985ec6bbf5b514414e73cee6f6fAffected
  • 36c75ce3bd299878fd9b238e9803d3817ddafbf3 to before 8d4b989d9c9afe5f185aa5853b666fc4617afe9eAffected
  • 2577fece583c7c05cda7ad50dde7638c962665e1Affected
  • 40ba3fa21250e361bdd8f00800b3e2cb6160de95Affected
  • b0e7a935739f33ed2bd6868b89f97dd4c2683c26Affected
  • 66eb7b7f23dd9aec5356e7054dd3596ae7648ff5Affected
  • b27751fb1f271bbb78d5993c0b10011628e40e18Affected
  • 6.1.63 to before 6.1.178Affected
  • 6.6.2 to before 6.6.145Affected
  • 4.19.299 to before 4.20Affected
  • 5.4.261 to before 5.5Affected
  • 5.10.201 to before 5.11Affected
  • 5.15.139 to before 5.16Affected
  • 6.5.12 to before 6.6Affected
LinuxLinux
  • 6.7Affected
  • before 6.7Not affected
  • 6.1.178 through 6.1.*Not affected
  • 6.6.145 through 6.6.*Not affected
  • 6.12.97 through 6.12.*Not affected
  • 6.18.40 through 6.18.*Not affected
  • 7.1.5 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.