]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
dm: remove free_table_devices
authorChristoph Hellwig <hch@lst.de>
Tue, 15 Nov 2022 14:10:46 +0000 (22:10 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 16 Nov 2022 22:19:56 +0000 (15:19 -0700)
free_table_devices just warns and frees all table_device structures when
the target removal did not remove them.  This should never happen, but
if it did, just freeing the structure without deleting them from the
list or cleaning up the resources would not help at all.  So just WARN on
a non-empty list instead.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Mike Snitzer <snitzer@kernel.org>
Link: https://lore.kernel.org/r/20221115141054.1051801-3-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/md/dm.c

index 95a1ee3d314eb8e260518af582eab61ea8de0c3c..19d25bf997be43fc19cdf12c4ba45250c49ad857 100644 (file)
@@ -833,19 +833,6 @@ void dm_put_table_device(struct mapped_device *md, struct dm_dev *d)
        mutex_unlock(&md->table_devices_lock);
 }
 
-static void free_table_devices(struct list_head *devices)
-{
-       struct list_head *tmp, *next;
-
-       list_for_each_safe(tmp, next, devices) {
-               struct table_device *td = list_entry(tmp, struct table_device, list);
-
-               DMWARN("dm_destroy: %s still exists with %d references",
-                      td->dm_dev.name, refcount_read(&td->count));
-               kfree(td);
-       }
-}
-
 /*
  * Get the geometry associated with a dm device
  */
@@ -2122,7 +2109,7 @@ static void free_dev(struct mapped_device *md)
 
        cleanup_mapped_device(md);
 
-       free_table_devices(&md->table_devices);
+       WARN_ON_ONCE(!list_empty(&md->table_devices));
        dm_stats_cleanup(&md->stats);
        free_minor(minor);