diff options
author | Mikulas Patocka <mpatocka@redhat.com> | 2008-11-13 23:38:52 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-11-20 14:54:51 -0800 |
commit | 257379190a7c3ca37afd780548d0471ab45000bf (patch) | |
tree | b7b8fe4fe425fb671c4ac49ffa87d3976930d5aa /drivers | |
parent | c9e53b238e2d99094b2158a7d85170ba7dd8eeb8 (diff) |
dm raid1: flush workqueue before destruction
commit 18776c7316545482a02bfaa2629a2aa1afc48357 upstream.
We queue work on keventd queue --- so this queue must be flushed in the
destructor. Otherwise, keventd could access mirror_set after it was freed.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/dm-raid1.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index ff05fe89308..97ef945fbd7 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c @@ -1598,6 +1598,7 @@ static void mirror_dtr(struct dm_target *ti) del_timer_sync(&ms->timer); flush_workqueue(ms->kmirrord_wq); + flush_scheduled_work(); dm_kcopyd_client_destroy(ms->kcopyd_client); destroy_workqueue(ms->kmirrord_wq); free_context(ms, ti, ms->nr_mirrors); |