]> git.ipfire.org Git - people/ms/linux.git/commitdiff
dm raid1: flush workqueue before destruction
authorMikulas Patocka <mpatocka@redhat.com>
Thu, 13 Nov 2008 23:38:52 +0000 (23:38 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 20 Nov 2008 22:54:51 +0000 (14:54 -0800)
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>
drivers/md/dm-raid1.c

index ff05fe89308313ab5792a6b3dc9146db3e585c6a..97ef945fbd7443e9cf765593377ae1c3899aaf46 100644 (file)
@@ -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);