From: Yufen Yu Date: Tue, 11 Aug 2020 02:21:16 +0000 (-0400) Subject: blkcg: fix memleak for iolatency X-Git-Tag: v5.8.6~161 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=614b266f69fe52409b89854ff1ea68146bf13817;p=thirdparty%2Fkernel%2Fstable.git blkcg: fix memleak for iolatency [ Upstream commit 27029b4b18aa5d3b060f0bf2c26dae254132cfce ] 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 Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 0ecc897b225c9..6e8f5e60b0982 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -1056,13 +1056,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: