diff options
author | Christoph Hellwig <hch@lst.de> | 2022-09-21 21:04:45 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-09-27 04:09:31 +0300 |
commit | 33dc62796cb657a633050138a86253fb2a553713 (patch) | |
tree | f79851f1b4ecb03a3d0475b0982f6cf0e96beb48 /block | |
parent | f168420c62e7a106961f2489a89f6ade84fe3f27 (diff) | |
download | linux-33dc62796cb657a633050138a86253fb2a553713.tar.xz |
blk-cgroup: fix error unwinding in blkcg_init_queue
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>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-cgroup.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 869af9d72bcf..3a88f8c011d2 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -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; |