CVE-2026-74321

btrfs: fix invalid pointer dereference in __btrfs_run_delayed_refs()

State
Published
Severity
7.5 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:

btrfs: fix invalid pointer dereference in __btrfs_run_delayed_refs()

In the beginning of the loop, we try to obtain a locked delayed ref head, if 'locked_ref' is currently NULL, by calling btrfs_select_ref_head(), which can return an error pointer. If the error pointer is -EAGAIN we do a continue and go back to the beginning of the loop, which will not try again to call btrfs_select_ref_head() since 'locked_ref' is no longer NULL but it's ERR_PTR(-EAGAIN), and then we do:

spin_lock(&locked_ref->lock);

against a ERR_PTR(-EAGAIN) value, generating an invalid pointer dereference.

Fix this by ensuring that 'locked_ref' is set to NULL when btrfs_select_ref_head() returns ERR_PTR(-EAGAIN) and incrementing 'count' as well, to prevent infinite looping. We do this by doing a goto to the bottom of the loop that already sets 'locked_ref' to NULL and does a cond_resched(), with an increment to 'count' right before the goto. These measures were in place before the refactoring in commit 0110a4c43451 ("btrfs: refactor __btrfs_run_delayed_refs loop") but were unintentionally lost afterwards.

Scores

CVSSScoreVectorSource
3.17.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 0110a4c43451533de1ea1bbdc57b5d452f9d8b25 to before c372ca227e16bace86f1df1fa4ae6849e2fcfa28Affected
  • 0110a4c43451533de1ea1bbdc57b5d452f9d8b25 to before a71143590ce9764dbcb47617647592ff8b4d48bcAffected
  • 0110a4c43451533de1ea1bbdc57b5d452f9d8b25 to before 65770111a2d47c2b15e20b2ba92bb12198f289d4Affected
  • 0110a4c43451533de1ea1bbdc57b5d452f9d8b25 to before 015dc4a1e0c2cba551d4620eba13d26d5081dc34Affected
  • 0110a4c43451533de1ea1bbdc57b5d452f9d8b25 to before ba9fa2ff5981589bb49094d3358c339b37c47f53Affected
  • 0110a4c43451533de1ea1bbdc57b5d452f9d8b25 to before 3b15d02be05e74321adb1e0ae0cb4ccfba7c6cb1Affected
  • 0110a4c43451533de1ea1bbdc57b5d452f9d8b25 to before 9faa6b69ad73f03c7bde53e07d75a28822dc9a1aAffected
  • 0110a4c43451533de1ea1bbdc57b5d452f9d8b25 to before 486f8298b6188ff11ef1f4be7f1d5d2e4d1b1faeAffected
LinuxLinux
  • 4.20Affected
  • before 4.20Not affected
  • 5.10.261 through 5.10.*Not affected
  • 5.15.212 through 5.15.*Not 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.