summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/workqueue.c14
1 files changed, 1 insertions, 13 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 4b109a7d390b..fed20b9813e5 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -14,13 +14,10 @@
* Theodore Ts'o <tytso@mit.edu>
*/
-#define __KERNEL_SYSCALLS__
-
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/init.h>
-#include <linux/unistd.h>
#include <linux/signal.h>
#include <linux/completion.h>
#include <linux/workqueue.h>
@@ -171,7 +168,6 @@ static int worker_thread(void *__startup)
struct k_sigaction sa;
daemonize("%s/%d", startup->name, cpu);
- allow_signal(SIGCHLD);
current->flags |= PF_IOTHREAD;
cwq->thread = current;
@@ -180,7 +176,7 @@ static int worker_thread(void *__startup)
complete(&startup->done);
- /* Install a handler so SIGCLD is delivered */
+ /* SIG_IGN makes children autoreap: see do_notify_parent(). */
sa.sa.sa_handler = SIG_IGN;
sa.sa.sa_flags = 0;
siginitset(&sa.sa.sa_mask, sigmask(SIGCHLD));
@@ -200,14 +196,6 @@ static int worker_thread(void *__startup)
if (!list_empty(&cwq->worklist))
run_workqueue(cwq);
-
- if (signal_pending(current)) {
- while (waitpid(-1, NULL, __WALL|WNOHANG) > 0)
- /* SIGCHLD - auto-reaping */ ;
-
- /* zap all other signals */
- flush_signals(current);
- }
}
remove_wait_queue(&cwq->more_work, &wait);
complete(&cwq->exit);