On 2/25/20 12:38 PM, Bart Van Assche wrote: > 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 *); That's not a bad idea and would be more future proof, in case more fields are added at a later date. -- Jens Axboe