• Pavel Begunkov's avatar
    io_uring: fix lazy work init · 59960b9d
    Pavel Begunkov authored
    Don't leave garbage in req.work before punting async on -EAGAIN
    in io_iopoll_queue().
    
    [  140.922099] general protection fault, probably for non-canonical
         address 0xdead000000000100: 0000 [#1] PREEMPT SMP PTI
    ...
    [  140.922105] RIP: 0010:io_worker_handle_work+0x1db/0x480
    ...
    [  140.922114] Call Trace:
    [  140.922118]  ? __next_timer_interrupt+0xe0/0xe0
    [  140.922119]  io_wqe_worker+0x2a9/0x360
    [  140.922121]  ? _raw_spin_unlock_irqrestore+0x24/0x40
    [  140.922124]  kthread+0x12c/0x170
    [  140.922125]  ? io_worker_handle_work+0x480/0x480
    [  140.922126]  ? kthread_park+0x90/0x90
    [  140.922127]  ret_from_fork+0x22/0x30
    
    Fixes: 7cdaf587 ("io_uring: avoid whole io_wq_work copy for requests completed inline")
    Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    59960b9d
io_uring.c 192 KB