> Assuming you agree with this change... I don't know how it should be merged.
> Probably the change in signal.c should be sent separately, but this breaks
> -mm tree.

The relevant -mm differences are just in one patch that folds finish_stop
into do_signal_stop, right?  If I can apply just that one patch to the
Linus tree (i.e. v2.6.31-rc4+) and then yours without conflicts, that does
just fine.

The signal.c change should go upstream ASAP, and that patch should also
include a change to the tracehook_notify_jctl kerneldoc so that it is
accurate about the locking et al.  (I am assuming you are confident that we
won't want to revamp do_signal_stop again differently for this later.)

> -     notify = tracehook_notify_jctl(stop_count == 0 ? CLD_STOPPED : 0,
> -                                    CLD_STOPPED);
> +     notify = sig->group_stop_count == 1 ? CLD_STOPPED : 0;
> +     notify = tracehook_notify_jctl(notify, CLD_STOPPED);
>  
> +     if (sig->group_stop_count) {
> +             if (!--sig->group_stop_count)

This warrants a comment here about the first if.  The only reason it is
there is that tracehook_notify_jctl is allowed to drop and reacquire the
siglock, which makes the sig->group_stop_count = 1 logic et al beforehand
very important.


Thanks,
Roland

Reply via email to