Commit d7b00aad authored by NeilBrown's avatar NeilBrown Committed by Greg Kroah-Hartman

md: flush ->event_work before stopping array.

commit ee5d004f upstream.

The 'event_work' worker used by dm-raid may still be running
when the array is stopped.  This can result in an oops.

So flush the workqueue on which it is run after detaching
and before destroying the device.
Reported-by: default avatarHeinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.com>
Fixes: 9d09e663 ("dm: raid456 basic support")
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1335a48a
...@@ -5306,6 +5306,8 @@ EXPORT_SYMBOL_GPL(md_stop_writes); ...@@ -5306,6 +5306,8 @@ EXPORT_SYMBOL_GPL(md_stop_writes);
static void __md_stop(struct mddev *mddev) static void __md_stop(struct mddev *mddev)
{ {
mddev->ready = 0; mddev->ready = 0;
/* Ensure ->event_work is done */
flush_workqueue(md_misc_wq);
mddev->pers->stop(mddev); mddev->pers->stop(mddev);
if (mddev->pers->sync_request && mddev->to_remove == NULL) if (mddev->pers->sync_request && mddev->to_remove == NULL)
mddev->to_remove = &md_redundancy_group; mddev->to_remove = &md_redundancy_group;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment