From: Mikulas Patocka Date: Thu, 13 Nov 2008 23:38:52 +0000 (+0000) Subject: dm raid1: flush workqueue before destruction X-Git-Tag: v2.6.27.7~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=257379190a7c3ca37afd780548d0471ab45000bf;p=thirdparty%2Fkernel%2Fstable.git 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 Signed-off-by: Alasdair G Kergon Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index ff05fe8930831..97ef945fbd744 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);