2005-10-23 16:37:26

by Oleg Nesterov

[permalink] [raw]
Subject: Re: [PATCH] fix exit_itimers() vs posix_timer_event() AB-BAdeadlock

Oleg Nesterov wrote:
>
> Andrew Morton wrote:
> >
> > Oleg Nesterov <[email protected]> wrote:
> > >
> > > + /*
> > > + * We are locking ->it_lock + tasklist_lock backwards
> > > + * from release_task()->exit_itimers(), beware deadlock.
> > > + */
> > > + leader = timr->it_process->group_leader;
> > > + while (unlikely(!read_trylock(&tasklist_lock))) {
> > > + if (leader->flags & PF_EXITING) {
> > > + smp_rmb();
> > > + if (thread_group_empty(leader))
> > > + return 0;
> > > + }
> > > + cpu_relax();
> > > + }
> >
> > Oh dear. Is there no way to fix this up by taking the locks in the correct
> > order? (Whatever that is).

Andrew, please drop this patch. It is obsoleted by Roland's
"[PATCH] Call exit_itimers from do_exit, not __exit_signal".

Oleg.