lkml.org 
[lkml]   [2005]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] Additional/catchup RCU signal fixes for -mm
    "Paul E. McKenney" wrote:
    >
    > > If !thread_group_leader() does exec de_thread() calls release_task(->group_leader)
    > > before calling exit_itimers(). This means that send_group_sigqueue() which
    > > always has p == ->group_leader parameter can oops here.
    >
    > But in that case, __exit_sighand(->group_leader) would have been called,
    > so ->sighand would be NULL.

    Yes, that is why (I think) oops can happen.

    > And none of this can change while we are holding
    > tasklist_lock.

    Yes, but de_thread()->release_task(->group_leader) can take tasklist_lock
    before us.

    > If we don't want to be hitting the exec()ed task with a signal, the
    > thing to do would be to drop the signal, as in the attached patch.
    > I believe that this is an acceptable approach, since had the timer
    > fired slightly later, it would have been disabled, right?
    >
    > Thoughts?
    >
    > Thanx, Paul
    >
    > Signed-off-by: <paulmck@us.ibm.com>
    >
    > diff -urpNa -X dontdiff linux-2.6.14-mm0-fix-2/kernel/signal.c linux-2.6.14-mm0-fix-3/kernel/signal.c
    > --- linux-2.6.14-mm0-fix-2/kernel/signal.c 2005-11-05 15:05:38.000000000 -0800
    > +++ linux-2.6.14-mm0-fix-3/kernel/signal.c 2005-11-05 16:27:52.000000000 -0800
    > @@ -1481,6 +1481,10 @@ send_group_sigqueue(int sig, struct sigq
    > read_lock(&tasklist_lock);
    > while (p->group_leader != p)
    > p = p->group_leader;
    > + if (p->sighand == NULL) {
    > + ret = 1;

    Oh, I think there is another problem here. I'll post a separate
    message.

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

    \
     
     \ /
      Last update: 2005-11-06 14:13    [W:3.734 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site