killall5: don't do STOP/CONT dance if the signal we send is SIGSTOP or SIGCONT
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 3 Apr 2012 06:16:05 +0000 (08:16 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 3 Apr 2012 06:16:05 +0000 (08:16 +0200)
function                                             old     new   delta
kill_main                                            913     942     +29

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
procps/kill.c

index b267a7a..cd189bc 100644 (file)
@@ -163,7 +163,8 @@ int kill_main(int argc, char **argv)
                /* Find out our session id */
                sid = getsid(pid);
                /* Stop all processes */
-               kill(-1, SIGSTOP);
+               if (signo != SIGSTOP && signo != SIGCONT)
+                       kill(-1, SIGSTOP);
                /* Signal all processes except those in our session */
                while ((p = procps_scan(p, PSSCAN_PID|PSSCAN_SID)) != NULL) {
                        int i;
@@ -203,7 +204,8 @@ int kill_main(int argc, char **argv)
                }
  resume:
                /* And let them continue */
-               kill(-1, SIGCONT);
+               if (signo != SIGSTOP && signo != SIGCONT)
+                       kill(-1, SIGCONT);
                return ret;
        }