• J
    io_uring: initialize ctx->sqo_wait earlier · 583863ed
    Jens Axboe 提交于
    Ensure that ctx->sqo_wait is initialized as soon as the ctx is allocated,
    instead of deferring it to the offload setup. This fixes a syzbot
    reported lockdep complaint, which is really due to trying to wake_up
    on an uninitialized wait queue:
    
    RSP: 002b:00007fffb1fb9aa8 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000441319
    RDX: 0000000000000001 RSI: 0000000020000140 RDI: 000000000000047b
    RBP: 0000000000010475 R08: 0000000000000001 R09: 00000000004002c8
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000402260
    R13: 00000000004022f0 R14: 0000000000000000 R15: 0000000000000000
    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
    CPU: 1 PID: 7090 Comm: syz-executor222 Not tainted 5.7.0-rc1-next-20200415-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x188/0x20d lib/dump_stack.c:118
     assign_lock_key kernel/locking/lockdep.c:913 [inline]
     register_lock_class+0x1664/0x1760 kernel/locking/lockdep.c:1225
     __lock_acquire+0x104/0x4c50 kernel/locking/lockdep.c:4234
     lock_acquire+0x1f2/0x8f0 kernel/locking/lockdep.c:4934
     __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
     _raw_spin_lock_irqsave+0x8c/0xbf kernel/locking/spinlock.c:159
     __wake_up_common_lock+0xb4/0x130 kernel/sched/wait.c:122
     io_cqring_ev_posted+0xa5/0x1e0 fs/io_uring.c:1160
     io_poll_remove_all fs/io_uring.c:4357 [inline]
     io_ring_ctx_wait_and_kill+0x2bc/0x5a0 fs/io_uring.c:7305
     io_uring_create fs/io_uring.c:7843 [inline]
     io_uring_setup+0x115e/0x22b0 fs/io_uring.c:7870
     do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295
     entry_SYSCALL_64_after_hwframe+0x49/0xb3
    RIP: 0033:0x441319
    Code: e8 5c ae 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 bb 0a fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fffb1fb9aa8 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9
    
    Reported-by: syzbot+8c91f5d054e998721c57@syzkaller.appspotmail.com
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    583863ed
io_uring.c 190.5 KB