Commit 66dcd4a1 authored by NeilBrown's avatar NeilBrown Committed by Luis Henriques

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")
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent dbd9d457
...@@ -5264,6 +5264,8 @@ EXPORT_SYMBOL_GPL(md_stop_writes); ...@@ -5264,6 +5264,8 @@ EXPORT_SYMBOL_GPL(md_stop_writes);
static void __md_stop(struct mddev *mddev) static void __md_stop(struct mddev *mddev)
{ {
/* Ensure ->event_work is done */
flush_workqueue(md_misc_wq);
mddev->ready = 0; mddev->ready = 0;
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)
......
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