diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index 84cdb700a247040d4e72a7f79c03df12a7598ced..fa72f015320615d3318fba15e685c6718ba20ee5 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -752,6 +752,8 @@ static int multipath_ctr(struct dm_target *ti, unsigned int argc,
 static void multipath_dtr(struct dm_target *ti)
 {
 	struct multipath *m = (struct multipath *) ti->private;
+
+	flush_workqueue(kmultipathd);
 	free_multipath(m);
 }