diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-10-26 01:08:05 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-26 01:08:05 -0400 |
| commit | ccd7bc2f67fdfa9c47ceae64f1117d1fb6cb8737 (patch) | |
| tree | 33b13cd5582c419f8ae098edb24ca355974a7ccf /kernel/signal.c | |
| parent | 6f0ef4fa57b9ba27d7b1c330bad041f1665501fe (diff) | |
| parent | 6693e74a16ef563960764bd963f1048392135c3c (diff) | |
Merge branch 'master'
Diffstat (limited to 'kernel/signal.c')
| -rw-r--r-- | kernel/signal.c | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 50c992643771..f2b96b08fb44 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
| @@ -397,20 +397,8 @@ void __exit_signal(struct task_struct *tsk) | |||
| 397 | flush_sigqueue(&tsk->pending); | 397 | flush_sigqueue(&tsk->pending); |
| 398 | if (sig) { | 398 | if (sig) { |
| 399 | /* | 399 | /* |
| 400 | * We are cleaning up the signal_struct here. We delayed | 400 | * We are cleaning up the signal_struct here. |
| 401 | * calling exit_itimers until after flush_sigqueue, just in | ||
| 402 | * case our thread-local pending queue contained a queued | ||
| 403 | * timer signal that would have been cleared in | ||
| 404 | * exit_itimers. When that called sigqueue_free, it would | ||
| 405 | * attempt to re-take the tasklist_lock and deadlock. This | ||
| 406 | * can never happen if we ensure that all queues the | ||
| 407 | * timer's signal might be queued on have been flushed | ||
| 408 | * first. The shared_pending queue, and our own pending | ||
| 409 | * queue are the only queues the timer could be on, since | ||
| 410 | * there are no other threads left in the group and timer | ||
| 411 | * signals are constrained to threads inside the group. | ||
| 412 | */ | 401 | */ |
| 413 | exit_itimers(sig); | ||
| 414 | exit_thread_group_keys(sig); | 402 | exit_thread_group_keys(sig); |
| 415 | kmem_cache_free(signal_cachep, sig); | 403 | kmem_cache_free(signal_cachep, sig); |
| 416 | } | 404 | } |
