Messages in this thread | | | Date | Mon, 25 May 2015 10:53:34 +0200 | From | Richard Weinberger <> | Subject | Re: [RFC] signal:remove duplicate code |
| |
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.wang2010@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
| |