io_uring: fix lazy work init
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 15 Jun 2020 13:36:30 +0000 (16:36 +0300)
committerJens Axboe <axboe@kernel.dk>
Mon, 15 Jun 2020 14:37:55 +0000 (08:37 -0600)
commit59960b9deb5354e4cdb0b6ed3a3b653a2b4eb602
treeb5ac18d6e77050103228a454569ee6db7d91265f
parentb3a9e3b9622ae10064826dccb4f7a52bd88c7407
io_uring: fix lazy work init

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: 7cdaf587de7c ("io_uring: avoid whole io_wq_work copy for requests completed inline")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c