Blob Blame History Raw
From: Wang ShaoBo <bobo.shaobowang@huawei.com>
Date: Thu, 24 Nov 2022 09:58:17 +0800
Subject: drbd: destroy workqueue when drbd device was freed
Git-commit: 8692814b77ca4228a99da8a005de0acf40af6132
Patch-mainline: v6.2-rc1
References: git-fixes

A submitter workqueue is dynamically allocated by init_submitter()
called by drbd_create_device(), we should destroy it when this
device is not needed or destroyed.

[lduncan: hand modified to apply: our "add_disk()" does not return
 a value.]

Fixes: 113fef9e20e0 ("drbd: prepare to queue write requests on a submit worker")
Signed-off-by: Wang ShaoBo <bobo.shaobowang@huawei.com>
Link: https://lore.kernel.org/r/20221124015817.2729789-3-bobo.shaobowang@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Acked-by: Lee Duncan <lduncan@suse.com>
---
 drivers/block/drbd/drbd_main.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -2258,6 +2258,8 @@ void drbd_destroy_device(struct kref *kr
 		kref_put(&peer_device->connection->kref, drbd_destroy_connection);
 		kfree(peer_device);
 	}
+	if (device->submit.wq)
+		destroy_workqueue(device->submit.wq);
 	memset(device, 0xfd, sizeof(*device));
 	kfree(device);
 	kref_put(&resource->kref, drbd_destroy_resource);