Description
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 status
0dd84b319352bb8ba64752d4e45396d8b13e6018 (git) before 24783dd06de870d646c25207bae186f78195f912
0dd84b319352bb8ba64752d4e45396d8b13e6018 (git) before 338378dfffbdbb8d37a18f0a0c0358812671f91e
0dd84b319352bb8ba64752d4e45396d8b13e6018 (git) before cefcb9297fbdb6d94b61787b4f8d84f55b741470
1678ca35b80a94d474fdc31e2497ce5d7ed52512 (git)
690b5c90fd2d81fd1d2b6110fa36783232f6dce2 (git)
8e7fb19f1a744fd34e982633ced756fee0498ef7 (git)
a5a58fab556bfe618b4c9719eb85712d78c6cb10 (git)
661c01b2181d9413c799127f13143583b69f20fd (git)
f42a9819ba84bed2e609a4dff56af37063dcabdc (git)
4.14.292 (semver) before 4.15
4.19.257 (semver) before 4.20
5.4.212 (semver) before 5.5
5.10.140 (semver) before 5.11
5.15.64 (semver) before 5.16
5.19.6 (semver) before 5.20
6.0
Any version before 6.0
6.18.16 (semver)
6.19.6 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/24783dd06de870d646c25207bae186f78195f912
git.kernel.org/...c/338378dfffbdbb8d37a18f0a0c0358812671f91e
git.kernel.org/...c/cefcb9297fbdb6d94b61787b4f8d84f55b741470