CVE-2023-54067

Source
https://cve.org/CVERecord?id=CVE-2023-54067
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-54067.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2023-54067
Downstream
Related
Published
2025-12-24T12:23:12.109Z
Modified
2026-03-31T17:29:27.309807594Z
Summary
btrfs: fix race when deleting free space root from the dirty cow roots list
Details

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

btrfs: fix race when deleting free space root from the dirty cow roots list

When deleting the free space tree we are deleting the free space root from the list fsinfo->dirtycowonlyroots without taking the lock that protects it, which is struct btrfsfsinfo::translock. This unsynchronized list manipulation may cause chaos if there's another concurrent manipulation of this list, such as when adding a root to it with ctree.c:addroottodirtylist().

This can result in all sorts of weird failures caused by a race, such as the following crash:

[337571.278245] general protection fault, probably for non-canonical address 0xdead000000000108: 0000 [#1] PREEMPT SMP PTI [337571.278933] CPU: 1 PID: 115447 Comm: btrfs Tainted: G W 6.4.0-rc6-btrfs-next-134+ #1 [337571.279153] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014 [337571.279572] RIP: 0010:commitcowonlyroots+0x11f/0x250 [btrfs] [337571.279928] Code: 85 38 06 00 (...) [337571.280363] RSP: 0018:ffff9f63446efba0 EFLAGS: 00010206 [337571.280582] RAX: ffff942d98ec2638 RBX: ffff9430b82b4c30 RCX: 0000000449e1c000 [337571.280798] RDX: dead000000000100 RSI: ffff9430021e4900 RDI: 0000000000036070 [337571.281015] RBP: ffff942d98ec2000 R08: ffff942d98ec2000 R09: 000000000000015b [337571.281254] R10: 0000000000000009 R11: 0000000000000001 R12: ffff942fe8fbf600 [337571.281476] R13: ffff942dabe23040 R14: ffff942dabe20800 R15: ffff942d92cf3b48 [337571.281723] FS: 00007f478adb7340(0000) GS:ffff94349fa40000(0000) knlGS:0000000000000000 [337571.281950] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [337571.282184] CR2: 00007f478ab9a3d5 CR3: 000000001e02c001 CR4: 0000000000370ee0 [337571.282416] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [337571.282647] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [337571.282874] Call Trace: [337571.283101] <TASK> [337571.283327] ? __diebody+0x1b/0x60 [337571.283570] ? dieaddr+0x39/0x60 [337571.283796] ? exc_generalprotection+0x22e/0x430 [337571.284022] ? asmexcgeneralprotection+0x22/0x30 [337571.284251] ? commitcowonlyroots+0x11f/0x250 [btrfs] [337571.284531] btrfscommittransaction+0x42e/0xf90 [btrfs] [337571.284803] ? rawspinunlock+0x15/0x30 [337571.285031] ? releaseextentbuffer+0x103/0x130 [btrfs] [337571.285305] resetbalancestate+0x152/0x1b0 [btrfs] [337571.285578] btrfsbalance+0xa50/0x11e0 [btrfs] [337571.285864] ? __kmemcachealloc_node+0x14a/0x410 [337571.286086] btrfsioctl+0x249a/0x3320 [btrfs] [337571.286358] ? modobjcgstate+0xd2/0x360 [337571.286577] ? refillobjstock+0xb0/0x160 [337571.286798] ? seqrelease+0x25/0x30 [337571.287016] ? __rseqhandlenotifyresume+0x3ba/0x4b0 [337571.287235] ? percpucounteraddbatch+0x2e/0xa0 [337571.287455] ? __x64sysioctl+0x88/0xc0 [337571.287675] __x64sysioctl+0x88/0xc0 [337571.287901] dosyscall64+0x38/0x90 [337571.288126] entrySYSCALL64afterhwframe+0x72/0xdc [337571.288352] RIP: 0033:0x7f478aaffe9b

So fix this by locking struct btrfsfsinfo::trans_lock before deleting the free space root from that list.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/54xxx/CVE-2023-54067.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
a5ed91828518ab076209266c2bc510adabd078df
Fixed
6f1c81886b0b56cb88b311e5d2f203625474d892
Fixed
8ce9139aea5e60a247bde5af804312f54975f443
Fixed
babebf023e661b90b1c78b2baa384fb03a226879

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-54067.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.5.0
Fixed
6.1.39
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.4.4

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-54067.json"