[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAJrWOzCfjYHtJQFQ+YUmTk3jNmsOtxDMSqTDWqWs5YQPMborbg@mail.gmail.com>
Date: Tue, 25 Oct 2016 20:15:56 +0200
From: Roman Penyaev <roman.penyaev@...fitbricks.com>
To: Oleg Nesterov <oleg@...hat.com>
Cc: Andy Lutomirski <luto@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Tejun Heo <tj@...nel.org>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 1/1] workqueue: ignore dead tasks in a workqueue sleep hook
On Tue, Oct 25, 2016 at 6:08 PM, Oleg Nesterov <oleg@...hat.com> wrote:
> sorry for noise, forgot to mention...
>
> On 10/25, Oleg Nesterov wrote:
>>
>> On 10/25, Oleg Nesterov wrote:
>> >
>> > void oops_end_exit(void)
>> > {
>> > current->flags &= ~PF_WQ_WORKER;
>> > perhaps sonething else;
>> > }
>> >
>> > called by oops_end() before rewind_stack_do_exit() ?
>>
>> and "perhaps sonething else" above should probably clear current->plug,
>> it likely points to "struct blk_plug" on stack.
>>
>> and perhaps call task_work_run(). Currently only irq_thread() uses the
>> "destructor" work on stack, but think can have more users.
>
> and, probably absorb some code from do_exit(), say set_fs(USER_DS) and/or
> PF_EXITING check.
I agree that for stack which was rewound we need more cleanups. But in the
current patch I do not want to mix several cases. Here I try to avoid access
to a NULL pointer of a dead task. That is not related to a corrupted stack.
Regarding the PF_WQ_WORKER flags. I liked the idea that workqueue itself
should be able to detect that task is dead. Spreading the code which does
flags cleanup for a special workqueue case IMO is not nice.
And, indeed, PF_EXITING looks more generic. Thanks. I will resend this.
--
Roman
Powered by blists - more mailing lists