"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: <[email protected]>
>
> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]