On 2/25/20 10:55 AM, Jens Axboe wrote:
We use ->task_pid for exit cancellation, but we need to ensure it's cleared to zero for io_req_work_grab_env() to do the right thing.
How about initializing .task_pid with this (totally untested) patch? diff --git a/fs/io-wq.h b/fs/io-wq.h index ccc7d84af57d..b8d3287cec57 100644 --- a/fs/io-wq.h +++ b/fs/io-wq.h @@ -80,15 +80,7 @@ struct io_wq_work { }; #define INIT_IO_WORK(work, _func) \ - do { \ - (work)->list.next = NULL; \ - (work)->func = _func; \ - (work)->files = NULL; \ - (work)->mm = NULL; \ - (work)->creds = NULL; \ - (work)->fs = NULL; \ - (work)->flags = 0; \ - } while (0) \ + do { *(work) = (struct io_wq_work){ .func = _func }; } while (0) typedef void (get_work_fn)(struct io_wq_work *); typedef void (put_work_fn)(struct io_wq_work *); Thanks, Bart.