CVE-2025-38708: drbd: add missing kref_get in handle_write_conflicts
In the Linux kernel, the following vulnerability has been resolved:
drbd: add missing krefget in handlewriteconflicts
With two-primaries enabled, DRBD tries to detect "concurrent" writes and handle write conflicts, so that even if you write to the same sector simultaneously on both nodes, they end up with the identical data once the writes are completed.
In handling "superseeded" writes, we forgot a krefget, resulting in a premature drbddestroydevice and use after free, and further to kernel crashes with symptoms.
Relevance: No one should use DRBD as a random data generator, and apparently all users of "two-primaries" handle concurrent writes correctly on layer up. That is cluster file systems use some distributed lock manager, and live migration in virtualization environments stops writes on one node before starting writes on the other node.
Which means that other than for "test cases", this code path is never taken in real life.
FYI, in DRBD 9, things are handled differently nowadays. We still detect "write conflicts", but no longer try to be smart about them. We decided to disconnect hard instead: upper layers must not submit concurrent writes. If they do, that's their fault.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2025-38708?
CVE-2025-38708 has been classified with a medium severity level due to potential write conflicts in the DRBD implementation.
How do I fix CVE-2025-38708?
To fix CVE-2025-38708, it is recommended to update your LINBIT DRBD installation to the latest version that includes the security patch.
What systems are affected by CVE-2025-38708?
CVE-2025-38708 affects LINBIT DRBD when using the two-primaries configuration that allows concurrent writes.
What does CVE-2025-38708 involve?
CVE-2025-38708 involves a missing kref_get operation in the DRBD kernel module related to handling write conflicts.
Can CVE-2025-38708 lead to data corruption?
Yes, CVE-2025-38708 can potentially lead to data corruption if concurrent writes are not managed correctly.