]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
blkcg: fix memleak for iolatency
authorYufen Yu <yuyufen@huawei.com>
Tue, 11 Aug 2020 02:21:16 +0000 (22:21 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Sep 2020 09:26:55 +0000 (11:26 +0200)
[ 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 <yuyufen@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
block/blk-cgroup.c

index 1eb8895be4c6b8bb17d49022583d2ee411336e94..0c7addcd198592e8a09fb852c1d852ed09546e04 100644 (file)
@@ -1219,13 +1219,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: