Medium · published May 8, 2026
In the Linux kernel, the following vulnerability has been resolved:
md raid: fix hang when stopping arrays with metadata through dm-raid
When using device-mapper's dm-raid target, stopping a RAID array can cause
the system to hang under specific conditions.
This occurs when:
- A dm-raid managed device tree is suspended from top to bottom
(the top-level RAID device is suspended first, followed by its
underlying metadata and data devices)
- The top-level RAID device is then removed
Removing the top-level device triggers a hang in the following sequence:
the dm-raid destructor calls md_stop(), which tries to flush the
write-intent bitmap by writing to the metadata sub-devices. However, these
devices are already suspended, making them unable to complete the write-intent
operations and causing an indefinite block.
Fix:
- Prevent bitmap flushing when md_stop() is called from dm-raid
destructor context
and avoid a quiescing/unquescing cycle which could also cause I/O
- Still allow write-intent bitmap flushing when called from dm-raid
suspend context
This ensures that RAID array teardown can complete successfully even when the
underlying devices are in a suspended state.
This second patch uses md_is_rdwr() to distinguish between suspend and
destructor paths as elaborated on above.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 4.14.292, < 4.15 | 4.15 |
| linux/linux_kernel | ≥ 4.19.257, < 4.20 | 4.20 |
| linux/linux_kernel | ≥ 5.4.212, < 5.5 | 5.5 |
| linux/linux_kernel | ≥ 5.10.140, < 5.11 | 5.11 |
| linux/linux_kernel | ≥ 5.15.64, < 5.16 | 5.16 |
| linux/linux_kernel | ≥ 5.19.6, < 6.0 | 6.0 |
| linux/linux_kernel | ≥ 6.0.1, < 6.18.16 | 6.18.16 |
| linux/linux_kernel | ≥ 6.19, < 6.19.6 | 6.19.6 |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |