lkml.org 
[lkml]   [2016]   [Oct]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [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@redhat.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

\
 
 \ /
  Last update: 2016-10-25 20:17    [W:0.034 / U:0.624 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site