On 9/8/21 3:09 AM, Pavel Begunkov wrote: > WARNING: CPU: 0 PID: 10392 at fs/io_uring.c:1151 req_ref_put_and_test > fs/io_uring.c:1151 [inline] > WARNING: CPU: 0 PID: 10392 at fs/io_uring.c:1151 req_ref_put_and_test > fs/io_uring.c:1146 [inline] > WARNING: CPU: 0 PID: 10392 at fs/io_uring.c:1151 > io_req_complete_post+0xf5b/0x1190 fs/io_uring.c:1794 > Modules linked in: > Call Trace: > tctx_task_work+0x1e5/0x570 fs/io_uring.c:2158 > task_work_run+0xe0/0x1a0 kernel/task_work.c:164 > tracehook_notify_signal include/linux/tracehook.h:212 [inline] > handle_signal_work kernel/entry/common.c:146 [inline] > exit_to_user_mode_loop kernel/entry/common.c:172 [inline] > exit_to_user_mode_prepare+0x232/0x2a0 kernel/entry/common.c:209 > __syscall_exit_to_user_mode_work kernel/entry/common.c:291 [inline] > syscall_exit_to_user_mode+0x19/0x60 kernel/entry/common.c:302 > do_syscall_64+0x42/0xb0 arch/x86/entry/common.c:86 > entry_SYSCALL_64_after_hwframe+0x44/0xae > > When io_wqe_enqueue() -> io_wqe_create_worker() fails, we can't just > call io_run_cancel() to clean up the request, it's already enqueued via > io_wqe_insert_work() and will be executed either by some other worker > during cancellation (e.g. in io_wq_put_and_exit()). Oops yes, that looks better. Thanks, applied. -- Jens Axboe