lkml.org 
[lkml]   [2010]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 01/14] signal: fix SIGCONT notification code
    On 11/26, Tejun Heo wrote:
    >
    > get_signal_deliver() should test these flags and then notify
    > accoringly; however, it incorrectly tested SIGNAL_STOP_CONTINUED
    > instead of SIGNAL_CLD_CONTINUED,

    OOPS! Yes, typo. Thanks.

    This is even documented in prepare_signal(). And it always sets
    SIGNAL_STOP_CONTINUED along with SIGNAL_CLD_*, we shouldn't check
    this bit, of course.

    > Fix it by testing SIGNAL_CLD_CONTINUED. While at it, uncompress the
    > ?: test into if/else clause for better readability.
    >
    > Signed-off-by: Tejun Heo <tj@kernel.org>
    > Cc: Oleg Nesterov <oleg@redhat.com>
    > Cc: Roland McGrath <roland@redhat.com>

    Reviewed-by: Oleg Nesterov <oleg@redhat.com>

    > ---
    > kernel/signal.c | 9 +++++++--
    > 1 files changed, 7 insertions(+), 2 deletions(-)
    >
    > diff --git a/kernel/signal.c b/kernel/signal.c
    > index 4e3cff1..fe004b5 100644
    > --- a/kernel/signal.c
    > +++ b/kernel/signal.c
    > @@ -1853,8 +1853,13 @@ relock:
    > * the CLD_ si_code into SIGNAL_CLD_MASK bits.
    > */
    > if (unlikely(signal->flags & SIGNAL_CLD_MASK)) {
    > - int why = (signal->flags & SIGNAL_STOP_CONTINUED)
    > - ? CLD_CONTINUED : CLD_STOPPED;
    > + int why;
    > +
    > + if (signal->flags & SIGNAL_CLD_CONTINUED)
    > + why = CLD_CONTINUED;
    > + else
    > + why = CLD_STOPPED;
    > +
    > signal->flags &= ~SIGNAL_CLD_MASK;
    >
    > why = tracehook_notify_jctl(why, CLD_CONTINUED);
    > --
    > 1.7.1
    >



    \
     
     \ /
      Last update: 2010-11-26 14:59    [W:4.098 / U:2.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site