blk-cgroup: fix error unwinding in blkcg_init_queue
authorChristoph Hellwig <hch@lst.de>
Wed, 21 Sep 2022 18:04:45 +0000 (20:04 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 27 Sep 2022 01:09:31 +0000 (19:09 -0600)
When blk_throtl_init fails, we need to call blk_ioprio_exit.  Switch to
proper goto based unwinding to fix this.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Andreas Herrmann <aherrmann@suse.de>
Acked-by: Tejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20220921180501.1539876-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-cgroup.c

index 869af9d..3a88f8c 100644 (file)
@@ -1297,17 +1297,18 @@ int blkcg_init_queue(struct request_queue *q)
 
        ret = blk_throtl_init(q);
        if (ret)
-               goto err_destroy_all;
+               goto err_ioprio_exit;
 
        ret = blk_iolatency_init(q);
-       if (ret) {
-               blk_throtl_exit(q);
-               blk_ioprio_exit(q);
-               goto err_destroy_all;
-       }
+       if (ret)
+               goto err_throtl_exit;
 
        return 0;
 
+err_throtl_exit:
+       blk_throtl_exit(q);
+err_ioprio_exit:
+       blk_ioprio_exit(q);
 err_destroy_all:
        blkg_destroy_all(q);
        return ret;