Don't signal dead processes in doexit()
authorTormod Volden <debian.tormod@gmail.com>
Sat, 23 May 2015 10:58:42 +0000 (12:58 +0200)
committerAlan Cox <alan@linux.intel.com>
Sat, 23 May 2015 13:03:00 +0000 (14:03 +0100)
ssig() checks for this later but better check it here
before doing anything else.

Signed-off-by: Tormod Volden <debian.tormod@gmail.com>
Kernel/process.c

index caf94fd..f0726f3 100644 (file)
@@ -589,10 +589,10 @@ void doexit(int16_t val, int16_t val2)
               2 * sizeof(clock_t));
 
        for (p = ptab; p < ptab_end; ++p) {
-               if (p == udata.u_ptab)
+               if (p->p_status == P_EMPTY || p == udata.u_ptab)
                        continue;
                /* Set any child's parents to our parent */
-               if (p->p_status && p->p_pptr == udata.u_ptab)
+               if (p->p_pptr == udata.u_ptab)
                        p->p_pptr = udata.u_ptab->p_pptr;
                /* Send SIGHUP to any pgrp members and remove
                   them from our pgrp */