{"id":"CVE-2024-50273","state":"PUBLISHED","title":"btrfs: reinitialize delayed ref list after deleting it from the list","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nbtrfs: reinitialize delayed ref list after deleting it from the list\n\nAt insert_delayed_ref() if we need to update the action of an existing\nref to BTRFS_DROP_DELAYED_REF, we delete the ref from its ref head's\nref_add_list using list_del(), which leaves the ref's add_list member\nnot reinitialized, as list_del() sets the next and prev members of the\nlist to LIST_POISON1 and LIST_POISON2, respectively.\n\nIf later we end up calling drop_delayed_ref() against the ref, which can\nhappen during merging or when destroying delayed refs due to a transaction\nabort, we can trigger a crash since at drop_delayed_ref() we call\nlist_empty() against the ref's add_list, which returns false since\nthe list was not reinitialized after the list_del() and as a consequence\nwe call list_del() again at drop_delayed_ref(). This results in an\ninvalid list access since the next and prev members are set to poison\npointers, resulting in a splat if CONFIG_LIST_HARDENED and\nCONFIG_DEBUG_LIST are set or invalid poison pointer dereferences\notherwise.\n\nSo fix this by deleting from the list with list_del_init() instead.","publishedAt":"2024-11-19T01:30:12.589Z","updatedAt":"2026-08-05T11:42:57.250Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"2fd0948a483e9cb2d669c7199bc620a21c97673d","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"93c5b8decc0ef39ba84f4211d2db6da0a4aefbeb","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"bf0b0c6d159767c0d1c21f793950d78486690ee0","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"c24fa427fc0ae827b2a3a07f13738cbf82c3f851","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"2cb1a73d1d44a1c11b0ee5eeced765dd80ec48e6","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"f04be6d68f715c1473a8422fc0460f57b5e99931","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"50a3933760b427759afdd23156a7280a19357a92","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"c9a75ec45f1111ef530ab186c2a7684d0a0c9245","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/btrfs/delayed-ref.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.10","versionType":"semver"},{"version":"4.19.324","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.286","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.230","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.172","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.117","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.61","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.11.8","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/btrfs/delayed-ref.c"]}],"references":["https://git.kernel.org/stable/c/2fd0948a483e9cb2d669c7199bc620a21c97673d","https://git.kernel.org/stable/c/93c5b8decc0ef39ba84f4211d2db6da0a4aefbeb","https://git.kernel.org/stable/c/bf0b0c6d159767c0d1c21f793950d78486690ee0","https://git.kernel.org/stable/c/c24fa427fc0ae827b2a3a07f13738cbf82c3f851","https://git.kernel.org/stable/c/2cb1a73d1d44a1c11b0ee5eeced765dd80ec48e6","https://git.kernel.org/stable/c/f04be6d68f715c1473a8422fc0460f57b5e99931","https://git.kernel.org/stable/c/50a3933760b427759afdd23156a7280a19357a92","https://git.kernel.org/stable/c/c9a75ec45f1111ef530ab186c2a7684d0a0c9245","https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html","https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"],"weaknesses":["CWE-908"],"ingestedAt":"2026-10-29T20:07:56.516Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/50xxx/CVE-2024-50273.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-50273","state":"PUBLISHED","datePublished":"2024-11-19T01:30:12.589Z","dateUpdated":"2026-08-05T11:42:57.250Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-10-21T19:36:19.983Z"},"containers":{"cna":{"title":"btrfs: reinitialize delayed ref list after deleting it from the list","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nbtrfs: reinitialize delayed ref list after deleting it from the list\n\nAt insert_delayed_ref() if we need to update the action of an existing\nref to BTRFS_DROP_DELAYED_REF, we delete the ref from its ref head's\nref_add_list using list_del(), which leaves the ref's add_list member\nnot reinitialized, as list_del() sets the next and prev members of the\nlist to LIST_POISON1 and LIST_POISON2, respectively.\n\nIf later we end up calling drop_delayed_ref() against the ref, which can\nhappen during merging or when destroying delayed refs due to a transaction\nabort, we can trigger a crash since at drop_delayed_ref() we call\nlist_empty() against the ref's add_list, which returns false since\nthe list was not reinitialized after the list_del() and as a consequence\nwe call list_del() again at drop_delayed_ref(). This results in an\ninvalid list access since the next and prev members are set to poison\npointers, resulting in a splat if CONFIG_LIST_HARDENED and\nCONFIG_DEBUG_LIST are set or invalid poison pointer dereferences\notherwise.\n\nSo fix this by deleting from the list with list_del_init() instead."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"2fd0948a483e9cb2d669c7199bc620a21c97673d","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"93c5b8decc0ef39ba84f4211d2db6da0a4aefbeb","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"bf0b0c6d159767c0d1c21f793950d78486690ee0","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"c24fa427fc0ae827b2a3a07f13738cbf82c3f851","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"2cb1a73d1d44a1c11b0ee5eeced765dd80ec48e6","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"f04be6d68f715c1473a8422fc0460f57b5e99931","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"50a3933760b427759afdd23156a7280a19357a92","versionType":"git"},{"version":"1d57ee941692d0cc928526e21a1557b2ae3e11db","status":"affected","lessThan":"c9a75ec45f1111ef530ab186c2a7684d0a0c9245","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/btrfs/delayed-ref.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.10","versionType":"semver"},{"version":"4.19.324","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.286","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.230","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.172","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.117","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.61","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.11.8","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/btrfs/delayed-ref.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/2fd0948a483e9cb2d669c7199bc620a21c97673d"},{"url":"https://git.kernel.org/stable/c/93c5b8decc0ef39ba84f4211d2db6da0a4aefbeb"},{"url":"https://git.kernel.org/stable/c/bf0b0c6d159767c0d1c21f793950d78486690ee0"},{"url":"https://git.kernel.org/stable/c/c24fa427fc0ae827b2a3a07f13738cbf82c3f851"},{"url":"https://git.kernel.org/stable/c/2cb1a73d1d44a1c11b0ee5eeced765dd80ec48e6"},{"url":"https://git.kernel.org/stable/c/f04be6d68f715c1473a8422fc0460f57b5e99931"},{"url":"https://git.kernel.org/stable/c/50a3933760b427759afdd23156a7280a19357a92"},{"url":"https://git.kernel.org/stable/c/c9a75ec45f1111ef530ab186c2a7684d0a0c9245"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The delayed-ref machinery is driven by local filesystem syscalls (write, truncate, unlink, clone, subvolume/snapshot operations) against a mounted btrfs; there is no network-facing path into `insert_delayed_ref()`.\nAC:L - The attacker drives both halves entirely through their own workload — generating the delayed-ref sequence and then forcing `btrfs_merge_delayed_refs()`/transaction-abort cleanup via ordinary file I/O — with no dependence on external state or a race they cannot influence.\nPR:L - Only an unprivileged local account with write access to any btrfs filesystem (e.g. a home directory on a btrfs root fs) is needed; no CAP_SYS_ADMIN, no mount privileges, and no root in the init namespace.\nUI:N - No victim action is required — the attacker's own file operations on an already-mounted btrfs create the delayed refs and trigger the subsequent merge or abort-time cleanup.\nS:U - The corrupted list state and resulting fault are confined to the kernel's own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The double `list_del()` on a poisoned list entry is a list-corruption/memory-corruption condition in delayed-ref bookkeeping that, consistent with other btrfs list-corruption issues, can be leveraged toward disclosure of kernel memory contents.\nI:H - `__list_del()` performs two pointer writes derived from the corrupted `add_list` members, an unintended kernel write of the kind that underpins list-corruption exploitation, and the delayed-ref/extent accounting is left inconsistent on the affected filesystem.\nA:H - Dereferencing LIST_POISON1/LIST_POISON2 produces a kernel oops (or a hardened-list splat) while `head->lock` and `delayed_refs->lock` are held, hanging every other btrfs task on the filesystem and effectively panicking the system."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:42:57.250Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.10","versionEndExcluding":"4.19.324"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.10","versionEndExcluding":"5.4.286"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.10","versionEndExcluding":"5.10.230"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.10","versionEndExcluding":"5.15.172"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.10","versionEndExcluding":"6.1.117"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.10","versionEndExcluding":"6.6.61"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.10","versionEndExcluding":"6.11.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.10","versionEndExcluding":"6.12"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":5.5,"attackVector":"LOCAL","baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","integrityImpact":"NONE","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"LOW","confidentialityImpact":"NONE"}},{"other":{"type":"ssvc","content":{"id":"CVE-2024-50273","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2025-10-01T20:14:59.605584Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-908","lang":"en","type":"CWE","description":"CWE-908 Use of Uninitialized Resource"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2025-10-01T20:17:23.045Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html"},{"url":"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2025-11-03T22:27:54.002Z"}}]}}}