2008-03-12 13:18:09

by Oleg Nesterov

[permalink] [raw]
Subject: [PATCH] signals: send_signal: be paranoid about signalfd_notify()

send_signal() shouldn't call signalfd_notify() if it then fails with -EAGAIN.
Harmless, just a paranoid cleanup.

Also remove the comment. It is obsolete, signalfd_notify() was simplified and
does a simple wakeup.

Signed-off-by: Oleg Nesterov <[email protected]>

--- 25/kernel/signal.c~3_SS_NOTIFY 2008-03-12 15:16:52.000000000 +0300
+++ 25/kernel/signal.c 2008-03-12 15:55:47.000000000 +0300
@@ -769,13 +769,6 @@ static int send_signal(int sig, struct s
*/
if (legacy_queue(pending, sig))
return 0;
-
- /*
- * Deliver the signal to listening signalfds. This must be called
- * with the sighand lock held.
- */
- signalfd_notify(t, sig);
-
/*
* fast-pathed signals for kernel-internal things like SIGSTOP
* or SIGKILL.
@@ -825,6 +818,7 @@ static int send_signal(int sig, struct s
}

out_set:
+ signalfd_notify(t, sig);
sigaddset(&pending->signal, sig);
complete_signal(sig, t, group);
return 0;


2008-03-12 16:35:57

by Davide Libenzi

[permalink] [raw]
Subject: Re: [PATCH] signals: send_signal: be paranoid about signalfd_notify()

On Wed, 12 Mar 2008, Oleg Nesterov wrote:

> send_signal() shouldn't call signalfd_notify() if it then fails with -EAGAIN.
> Harmless, just a paranoid cleanup.
>
> Also remove the comment. It is obsolete, signalfd_notify() was simplified and
> does a simple wakeup.
>
> Signed-off-by: Oleg Nesterov <[email protected]>

Looks fine to me.

Acked-by: Davide Libenzi <[email protected]>



>
> --- 25/kernel/signal.c~3_SS_NOTIFY 2008-03-12 15:16:52.000000000 +0300
> +++ 25/kernel/signal.c 2008-03-12 15:55:47.000000000 +0300
> @@ -769,13 +769,6 @@ static int send_signal(int sig, struct s
> */
> if (legacy_queue(pending, sig))
> return 0;
> -
> - /*
> - * Deliver the signal to listening signalfds. This must be called
> - * with the sighand lock held.
> - */
> - signalfd_notify(t, sig);
> -
> /*
> * fast-pathed signals for kernel-internal things like SIGSTOP
> * or SIGKILL.
> @@ -825,6 +818,7 @@ static int send_signal(int sig, struct s
> }
>
> out_set:
> + signalfd_notify(t, sig);
> sigaddset(&pending->signal, sig);
> complete_signal(sig, t, group);
> return 0;
>


- Davide