Commit e460fa8b authored by Neil Brown's avatar Neil Brown Committed by Jiri Slaby

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 avatarJiri Slaby <jslaby@suse.cz>
parent 2ca1ae46
......@@ -5315,6 +5315,8 @@ EXPORT_SYMBOL_GPL(md_stop_writes);
static void __md_stop(struct mddev *mddev)
{
mddev->ready = 0;
/* Ensure ->event_work is done */
flush_workqueue(md_misc_wq);
mddev->pers->stop(mddev);
if (mddev->pers->sync_request && mddev->to_remove == NULL)
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