> CVE-2025-40303

« BACK_TO_HOME
PUBLISHED
2025-12-08 01:16
MODIFIED
2025-12-08 01:16
EPSS (Prob. Exploit)
0.14%
Top 96.8%
DATA SOURCES:
NVD 🔗 2025-12-08 RED HAT 🔗 2025-12-14 CVE PROJECT 🔗 2026-01-19 FIRST EPSS 🔗 2026-11-08 OSV 🔗 2026-11-08 MSRC 🔗 2026-11-02

> DESCRIPTION

In the Linux kernel, the following vulnerability has been resolved: btrfs: ensure no dirty metadata is written back for an fs with errors [BUG] During development of a minor feature (make sure all btrfs_bio::end_io() is called in task context), I noticed a crash in generic/388, where metadata writes triggered new works after btrfs_stop_all_workers(). It turns out that it can even happen without any code modification, just using RAID5 for metadata and the same workload from generic/388 is going to trigger the use-after-free. [CAUSE] If btrfs hits an error, the fs is marked as error, no new transaction is allowed thus metadata is in a frozen state. But there are some metadata modifications before that error, and they are still in the btree inode page cache. Since there will be no real transaction commit, all those dirty folios are just kept as is in the page cache, and they can not be invalidated by invalidate_inode_pages2() call inside close_ctree(), because they are dirty. And finally after btrfs_stop_all_workers(), we call iput() on btree inode, which triggers writeback of those dirty metadata. And if the fs is using RAID56 metadata, this will trigger RMW and queue new works into rmw_workers, which is already stopped, causing warning from queue_work() and use-after-free. [FIX] Add a special handling for write_one_eb(), that if the fs is already in an error state, immediately mark the bbio as failure, instead of really submitting them. Then during close_ctree(), iput() will just discard all those dirty tree blocks without really writing them back, thus no more new jobs for already stopped-and-freed workqueues. The extra discard in write_one_eb() also acts as an extra safenet. E.g. the transaction abort is triggered by some extent/free space tree corruptions, and since extent/free space tree is already corrupted some tree blocks may be allocated where they shouldn't be (overwriting existing tree blocks). In that case writing them back will further corrupting the fs.

> AFFECTED_PRODUCTS

ℹ️ Aucun produit affecté n'a encore été publié par NVD pour cette CVE.

> RED HAT SEVERITY ASSESSMENT

THREAT SEVERITY
Low

> OSV (GOOGLE OPEN SOURCE VULNERABILITIES)

btrfs: ensure no dirty metadata is written back for an fs with errors

AFFECTED PACKAGES:
Unknown / Unknown
Linux / Kernel

> HISTORIQUE DES MODIFICATIONS

Première apparition
08/12/2025 01:16
Source: NVD
📊 ENRICHISSEMENT 19/01/2026 17:37
CVEPROJECT
Champ modifié: CVE Project
Ancienne valeur:
Non
Nouvelle valeur:
Oui
📊 ENRICHISSEMENT 14/12/2025 04:02
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 23:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 22:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 21:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 20:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 19:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 18:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 17:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 16:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 15:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 14:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 13:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 12:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 11:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 10:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 09:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 08:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 07:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 06:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 05:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 04:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 03:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 02:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 01:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Low" }
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 00:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
N/A
Nouvelle valeur:
{ "threat_severity": "Low", "severity_scale": null }
📊 ENRICHISSEMENT 09/12/2025 00:30
REDHAT
Champ modifié: Red Hat
Ancienne valeur:
Non
Nouvelle valeur:
Oui
Total des modifications: 27 Dernière mise à jour: 9 months ago

> REFERENCES

https://git.kernel.org/stable/c/066ee13f05fbd82ada01883e51f0695172f98dff
https://git.kernel.org/stable/c/2618849f31e7cf51fadd4a5242458501a6d5b315
https://git.kernel.org/stable/c/54a5b5a15588e3b0b294df31474d08a2678d4291
https://git.kernel.org/stable/c/e2b3859067bf012d53c49b3f885fef40624a2c83
« BACK_TO_HOME