Skip to content

Commit

Permalink
md: flush ->event_work before stopping array.
Browse files Browse the repository at this point in the history
commit ee5d004 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: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.com>
Fixes: 9d09e66 ("dm: raid456 basic support")
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
  • Loading branch information
Neil Brown authored and Jiri Slaby committed Oct 5, 2015
1 parent 2ca1ae4 commit e460fa8
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions drivers/md/md.c
Original file line number Diff line number Diff line change
@@ -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;

0 comments on commit e460fa8

Please sign in to comment.