aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/block
diff options
context:
space:
mode:
authorYufen Yu <yuyufen@huawei.com>2020-08-10 22:21:16 -0400
committerJens Axboe <axboe@kernel.dk>2020-08-21 17:14:27 -0600
commit27029b4b18aa5d3b060f0bf2c26dae254132cfce (patch)
treec0738489f22130798e6a963614897c15794f4417 /block
parentMAINTAINERS: Add missing header files to BLOCK LAYER section (diff)
downloadwireguard-linux-27029b4b18aa5d3b060f0bf2c26dae254132cfce.tar.xz
wireguard-linux-27029b4b18aa5d3b060f0bf2c26dae254132cfce.zip
blkcg: fix memleak for iolatency
Normally, blkcg_iolatency_exit() will free related memory in iolatency when cleanup queue. But if blk_throtl_init() return error and queue init fail, blkcg_iolatency_exit() will not do that for us. Then it cause memory leak. Fixes: d70675121546 ("block: introduce blk-iolatency io controller") Signed-off-by: Yufen Yu <yuyufen@huawei.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block')
-rw-r--r--block/blk-cgroup.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index 619a79b51068..c195365c9817 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -1152,13 +1152,15 @@ int blkcg_init_queue(struct request_queue *q)
if (preloaded)
radix_tree_preload_end();
- ret = blk_iolatency_init(q);
+ ret = blk_throtl_init(q);
if (ret)
goto err_destroy_all;
- ret = blk_throtl_init(q);
- if (ret)
+ ret = blk_iolatency_init(q);
+ if (ret) {
+ blk_throtl_exit(q);
goto err_destroy_all;
+ }
return 0;
err_destroy_all: