• Hillf Danton's avatar
    io_uring: fix file leak on error path of io ctx creation · f26c08b4
    Hillf Danton authored
    Put file as part of error handling when setting up io ctx to fix
    memory leaks like the following one.
    
       BUG: memory leak
       unreferenced object 0xffff888101ea2200 (size 256):
         comm "syz-executor355", pid 8470, jiffies 4294953658 (age 32.400s)
         hex dump (first 32 bytes):
           00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
           20 59 03 01 81 88 ff ff 80 87 a8 10 81 88 ff ff   Y..............
         backtrace:
           [<000000002e0a7c5f>] kmem_cache_zalloc include/linux/slab.h:654 [inline]
           [<000000002e0a7c5f>] __alloc_file+0x1f/0x130 fs/file_table.c:101
           [<000000001a55b73a>] alloc_empty_file+0x69/0x120 fs/file_table.c:151
           [<00000000fb22349e>] alloc_file+0x33/0x1b0 fs/file_table.c:193
           [<000000006e1465bb>] alloc_file_pseudo+0xb2/0x140 fs/file_table.c:233
           [<000000007118092a>] anon_inode_getfile fs/anon_inodes.c:91 [inline]
           [<000000007118092a>] anon_inode_getfile+0xaa/0x120 fs/anon_inodes.c:74
           [<000000002ae99012>] io_uring_get_fd fs/io_uring.c:9198 [inline]
           [<000000002ae99012>] io_uring_create fs/io_uring.c:9377 [inline]
           [<000000002ae99012>] io_uring_setup+0x1125/0x1630 fs/io_uring.c:9411
           [<000000008280baad>] do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
           [<00000000685d8cf0>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Reported-by: syzbot+71c4697e27c99fddcf17@syzkaller.appspotmail.com
    Fixes: 0f212204 ("io_uring: don't rely on weak ->files references")
    Cc: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: default avatarHillf Danton <hdanton@sina.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    f26c08b4
io_uring.c 236 KB