Patch "blkcg: fix memory leak in blk_iolatency_init" has been added to the 5.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    blkcg: fix memory leak in blk_iolatency_init

to the 5.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     blkcg-fix-memory-leak-in-blk_iolatency_init.patch
and it can be found in the queue-5.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 29eeb1fbc41860c5d77240db729e19f42da13ecb
Author: Yanfei Xu <yanfei.xu@xxxxxxxxxxxxx>
Date:   Wed Sep 15 15:24:26 2021 +0800

    blkcg: fix memory leak in blk_iolatency_init
    
    [ Upstream commit 6f5ddde41069fcd1f0993ec76c9dbbf9d021fd4d ]
    
    BUG: memory leak
    unreferenced object 0xffff888129acdb80 (size 96):
      comm "syz-executor.1", pid 12661, jiffies 4294962682 (age 15.220s)
      hex dump (first 32 bytes):
        20 47 c9 85 ff ff ff ff 20 d4 8e 29 81 88 ff ff   G...... ..)....
        01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff82264ec8>] kmalloc include/linux/slab.h:591 [inline]
        [<ffffffff82264ec8>] kzalloc include/linux/slab.h:721 [inline]
        [<ffffffff82264ec8>] blk_iolatency_init+0x28/0x190 block/blk-iolatency.c:724
        [<ffffffff8225b8c4>] blkcg_init_queue+0xb4/0x1c0 block/blk-cgroup.c:1185
        [<ffffffff822253da>] blk_alloc_queue+0x22a/0x2e0 block/blk-core.c:566
        [<ffffffff8223b175>] blk_mq_init_queue_data block/blk-mq.c:3100 [inline]
        [<ffffffff8223b175>] __blk_mq_alloc_disk+0x25/0xd0 block/blk-mq.c:3124
        [<ffffffff826a9303>] loop_add+0x1c3/0x360 drivers/block/loop.c:2344
        [<ffffffff826a966e>] loop_control_get_free drivers/block/loop.c:2501 [inline]
        [<ffffffff826a966e>] loop_control_ioctl+0x17e/0x2e0 drivers/block/loop.c:2516
        [<ffffffff81597eec>] vfs_ioctl fs/ioctl.c:51 [inline]
        [<ffffffff81597eec>] __do_sys_ioctl fs/ioctl.c:874 [inline]
        [<ffffffff81597eec>] __se_sys_ioctl fs/ioctl.c:860 [inline]
        [<ffffffff81597eec>] __x64_sys_ioctl+0xfc/0x140 fs/ioctl.c:860
        [<ffffffff843fa745>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
        [<ffffffff843fa745>] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
        [<ffffffff84600068>] entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Once blk_throtl_init() queue init failed, blkcg_iolatency_exit() will
    not be invoked for cleanup. That leads a memory leak. Swap the
    blk_throtl_init() and blk_iolatency_init() calls can solve this.
    
    Reported-by: syzbot+01321b15cc98e6bf96d6@xxxxxxxxxxxxxxxxxxxxxxxxx
    Fixes: 19688d7f9592 (block/blk-cgroup: Swap the blk_throtl_init() and blk_iolatency_init() calls)
    Signed-off-by: Yanfei Xu <yanfei.xu@xxxxxxxxxxxxx>
    Acked-by: Tejun Heo <tj@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20210915072426.4022924-1-yanfei.xu@xxxxxxxxxxxxx
    Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index 31fe9be179d9..26446f97deee 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -1201,10 +1201,6 @@ 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_ioprio_init(q);
 	if (ret)
 		goto err_destroy_all;
@@ -1213,6 +1209,12 @@ int blkcg_init_queue(struct request_queue *q)
 	if (ret)
 		goto err_destroy_all;
 
+	ret = blk_iolatency_init(q);
+	if (ret) {
+		blk_throtl_exit(q);
+		goto err_destroy_all;
+	}
+
 	return 0;
 
 err_destroy_all:



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux