FKIE_CVE-2026-74572
Vulnerability from fkie_nvd - Published: 2026-08-15 13:18 - Updated: 2026-08-17 06:19
Severity
Summary
In the Linux kernel, the following vulnerability has been resolved:
btrfs: zoned: fix deadlock between metadata writeback and transaction commit
When writing out metadata extent buffers in a zoned filesystem,
btree_writepages() holds fs_info->zoned_meta_io_lock across the whole
writeback loop, including the call to btrfs_check_meta_write_pointer() ->
check_bg_is_active().
For the tree-log block group, check_bg_is_active() may fail to activate
the zone and fall back to btrfs_zone_finish_one_bg() to free an active
zone. That path waits for the running transaction to commit while still
holding zoned_meta_io_lock, but the committer needs that same lock to
write out the tree extents, so the two tasks deadlock:
Task A (kworker, metadata writeback) Task B (fsstress, transaction commit)
------------------------------------ -------------------------------------
wb_workfn() btrfs_commit_transaction(T)
btree_writepages() btrfs_write_and_wait_transaction()
btrfs_zoned_meta_io_lock() btrfs_write_marked_extents()
btrfs_check_meta_write_pointer() btree_writepages()
check_bg_is_active() [treelog_bg] btrfs_zoned_meta_io_lock()
btrfs_zone_finish_one_bg() <blocks on zoned_meta_io_lock,
btrfs_zone_finish() held by Task A>
do_zone_finish()
btrfs_inc_block_group_ro()
btrfs_wait_for_commit()
<blocks waiting for commit
of transaction T, done by
Task B>
The sibling branch in check_bg_is_active() already drops zoned_meta_io_lock
around do_zone_finish() for this exact reason. Do the same in the tree-log
branch: release the lock around btrfs_zone_finish_one_bg() and re-acquire
it afterwards. The lock only protects fs_info->active_{meta,system}_bg,
which this branch does not touch, and ctx->zoned_bg keeps a reference to
the block group across the unlock, so nothing is lost while the lock
is dropped.
This hang occasionally reproduces with fstests generic/475 on a zoned
btrfs filesystem.
References
Impacted products
| Vendor | Product | Version |
|---|
{
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"fs/btrfs/zoned.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "18577e77c2c8adaadf1f7c6e9bcd1c0b14e5dcdd",
"status": "affected",
"version": "13bb483d32abb6f8ebd40141d87eb68f11cc2dd2",
"versionType": "git"
},
{
"lessThan": "c3320873e0c04ce7b746fc8fe948f07bbbbdec33",
"status": "affected",
"version": "13bb483d32abb6f8ebd40141d87eb68f11cc2dd2",
"versionType": "git"
},
{
"lessThan": "deddd28fd83c264ee2ff5cd6b34449a9f1be6112",
"status": "affected",
"version": "13bb483d32abb6f8ebd40141d87eb68f11cc2dd2",
"versionType": "git"
},
{
"lessThan": "75859a7cd77cd2ddaddbcb963e3fcd34738953af",
"status": "affected",
"version": "13bb483d32abb6f8ebd40141d87eb68f11cc2dd2",
"versionType": "git"
},
{
"lessThan": "1ebe51c29fa9755d5b2fea28727c051117907cf8",
"status": "affected",
"version": "13bb483d32abb6f8ebd40141d87eb68f11cc2dd2",
"versionType": "git"
},
{
"status": "affected",
"version": "fca3a1cd3ba47f1815e0c0fcdc9aafaf02ee0a75",
"versionType": "git"
},
{
"lessThan": "6.6",
"status": "affected",
"version": "6.5.5",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"fs/btrfs/zoned.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.6"
},
{
"lessThan": "6.6",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.151",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.103",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.44",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.8",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbtrfs: zoned: fix deadlock between metadata writeback and transaction commit\n\nWhen writing out metadata extent buffers in a zoned filesystem,\nbtree_writepages() holds fs_info-\u003ezoned_meta_io_lock across the whole\nwriteback loop, including the call to btrfs_check_meta_write_pointer() -\u003e\ncheck_bg_is_active().\n\nFor the tree-log block group, check_bg_is_active() may fail to activate\nthe zone and fall back to btrfs_zone_finish_one_bg() to free an active\nzone. That path waits for the running transaction to commit while still\nholding zoned_meta_io_lock, but the committer needs that same lock to\nwrite out the tree extents, so the two tasks deadlock:\n\n Task A (kworker, metadata writeback) Task B (fsstress, transaction commit)\n ------------------------------------ -------------------------------------\n wb_workfn() btrfs_commit_transaction(T)\n btree_writepages() btrfs_write_and_wait_transaction()\n btrfs_zoned_meta_io_lock() btrfs_write_marked_extents()\n btrfs_check_meta_write_pointer() btree_writepages()\n check_bg_is_active() [treelog_bg] btrfs_zoned_meta_io_lock()\n btrfs_zone_finish_one_bg() \u003cblocks on zoned_meta_io_lock,\n btrfs_zone_finish() held by Task A\u003e\n do_zone_finish()\n btrfs_inc_block_group_ro()\n btrfs_wait_for_commit()\n \u003cblocks waiting for commit\n of transaction T, done by\n Task B\u003e\n\nThe sibling branch in check_bg_is_active() already drops zoned_meta_io_lock\naround do_zone_finish() for this exact reason. Do the same in the tree-log\nbranch: release the lock around btrfs_zone_finish_one_bg() and re-acquire\nit afterwards. The lock only protects fs_info-\u003eactive_{meta,system}_bg,\nwhich this branch does not touch, and ctx-\u003ezoned_bg keeps a reference to\nthe block group across the unlock, so nothing is lost while the lock\nis dropped.\n\nThis hang occasionally reproduces with fstests generic/475 on a zoned\nbtrfs filesystem."
}
],
"id": "CVE-2026-74572",
"lastModified": "2026-08-17T06:19:55.507",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 7.5,
"baseSeverity": "HIGH",
"confidentialityImpact": "NONE",
"integrityImpact": "NONE",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
"version": "3.1"
},
"exploitabilityScore": 3.9,
"impactScore": 3.6,
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"type": "Secondary"
}
]
},
"published": "2026-08-15T13:18:02.837",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/18577e77c2c8adaadf1f7c6e9bcd1c0b14e5dcdd"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/1ebe51c29fa9755d5b2fea28727c051117907cf8"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/75859a7cd77cd2ddaddbcb963e3fcd34738953af"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/c3320873e0c04ce7b746fc8fe948f07bbbbdec33"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/deddd28fd83c264ee2ff5cd6b34449a9f1be6112"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Received"
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Loading…
Loading…