From: Eric W. Biederman Currently md_thread calls allow_signal so it can receive a SIGKILL but then does nothing with it except flush the sigkill so that it not can use an interruptible sleep. This whole dance is silly so remove the unnecessary and broken signal handling logic. Cc: Neil Brown Signed-off-by: Eric W. Biederman Signed-off-by: Andrew Morton --- drivers/md/md.c | 6 ------ 1 files changed, 6 deletions(-) diff -puN drivers/md/md.c~md-remove-broken-sigkill-support drivers/md/md.c --- a/drivers/md/md.c~md-remove-broken-sigkill-support +++ a/drivers/md/md.c @@ -4542,17 +4542,11 @@ static int md_thread(void * arg) */ current->flags |= PF_NOFREEZE; - allow_signal(SIGKILL); while (!kthread_should_stop()) { /* We need to wait INTERRUPTIBLE so that * we don't add to the load-average. - * That means we need to be sure no signals are - * pending */ - if (signal_pending(current)) - flush_signals(current); - wait_event_interruptible_timeout (thread->wqueue, test_bit(THREAD_WAKEUP, &thread->flags) _