Ignore this. There is an obvious mistake. I will resend v2.
Thanks,
Yufen
On 2020/8/11 9:57, Yufen Yu wrote:
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@xxxxxxxxxx>
---
block/blk-cgroup.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index 619a79b51068..6f91b2ae0b27 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -1152,15 +1152,17 @@ int blkcg_init_queue(struct request_queue *q)
if (preloaded)
radix_tree_preload_end();
- ret = blk_iolatency_init(q);
- if (ret)
- goto err_destroy_all;
-
ret = blk_throtl_init(q);
if (ret)
goto err_destroy_all;
return 0;
+ ret = blk_iolatency_init(q);
+ if (ret) {
+ blk_throtl_exit(q);
+ goto err_destroy_all;
+ }
+
err_destroy_all:
blkg_destroy_all(q);
return ret;