Re: [PATCH rc1-mm] de_thread: fix deadlockable process addition

From: Eric W. Biederman
Date: Mon Apr 10 2006 - 18:13:40 EST


Oleg Nesterov <oleg@xxxxxxxxxx> writes:

> On 04/09, Oleg Nesterov wrote:
>>
>> proc_task_readdir:
>>
>> first_tid() returns old_leader
>>
>> next_tid() returns new_leader
>>
>> de_thread:
>> old_leader->group_leader = new_leader;
>>
>>
>> next_rid() returns old_leader again,
>> because it is not thread_group_leader()
>> anymore
>
> I think something like this for next_tid() is sufficient:
>
> - if (thread_group_leader(pos))
> + if (pos->pid == pos->tgid)
>
> We can also do the same change in first_tgid().

But the loop will terminate when things settle down,
and we can always use my original test of pos == start->group_leader.

I was worried about the stable kernel case and next_tid was
such a generic name I failed to associate it with /proc.

Short of confusion (and de_thread invariably introduces that)
I don't see anything that the code will actually do wrong.

Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/