Am 25.05.2015 um 07:49 schrieb yalin wang: > __dequeue_signal() is only called by dequeue_signal(), after that, > dequeue_signal() will call recalc_sigpending(), this function will > set or unset TIF_SIGPENDING bit, so we don't need do this in > __dequeue_signal() > > Signed-off-by: yalin wang <yalin.wang2...@gmail.com> > --- > kernel/signal.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/kernel/signal.c b/kernel/signal.c > index 836df8d..de33281 100644 > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -583,10 +583,9 @@ static int __dequeue_signal(struct sigpending *pending, > sigset_t *mask, > if (sig) { > if (current->notifier) { > if (sigismember(current->notifier_mask, sig)) { > - if (!(current->notifier)(current->notifier_data)) { > - clear_thread_flag(TIF_SIGPENDING);
Here be dragons. In __dequeue_signal() we clear TIF_SIGPENDING depending on the result of ->notifier(). Did you double check that clearing that flag goes hand in hand with recalc_sigpending()? Thanks, //richard -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/