Message ID | 20200811022116.1824539-1-yuyufen@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] blkcg: fix memleak for iolatency | expand |
ping On 2020/8/11 10:21, 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@huawei.com> > --- > block/blk-cgroup.c | 8 +++++--- > 1 file 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: >
On 8/10/20 7:21 PM, 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. Applied, thanks.
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:
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> --- block/blk-cgroup.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)