diff options
author | Mikulas Patocka <mpatocka@redhat.com> | 2008-11-13 23:38:52 +0000 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2008-11-13 23:38:52 +0000 |
commit | 18776c7316545482a02bfaa2629a2aa1afc48357 (patch) | |
tree | ecd30db869eff5968921af7df8f055794ed3730f /drivers/md | |
parent | 4ffaf869c7780bbdfc11291e5fd4b61dde662b1c (diff) | |
download | linux-18776c7316545482a02bfaa2629a2aa1afc48357.tar.gz linux-18776c7316545482a02bfaa2629a2aa1afc48357.tar.bz2 linux-18776c7316545482a02bfaa2629a2aa1afc48357.zip |
dm raid1: flush workqueue before destruction
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>
Cc: stable@kernel.org
Diffstat (limited to 'drivers/md')
-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 9d7b53ed75b2..ec43f9fa4b2a 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c @@ -1032,6 +1032,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); |