aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c19
1 files changed, 2 insertions, 17 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index ca1fa854e469..b29c868bd5ee 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -310,9 +310,7 @@ static void flush_sigqueue(struct sigpending *queue)
310/* 310/*
311 * Flush all pending signals for a task. 311 * Flush all pending signals for a task.
312 */ 312 */
313 313void flush_signals(struct task_struct *t)
314void
315flush_signals(struct task_struct *t)
316{ 314{
317 unsigned long flags; 315 unsigned long flags;
318 316
@@ -326,19 +324,6 @@ flush_signals(struct task_struct *t)
326/* 324/*
327 * This function expects the tasklist_lock write-locked. 325 * This function expects the tasklist_lock write-locked.
328 */ 326 */
329void __exit_sighand(struct task_struct *tsk)
330{
331 struct sighand_struct * sighand = tsk->sighand;
332
333 /* Ok, we're done with the signal handlers */
334 tsk->sighand = NULL;
335 if (atomic_dec_and_test(&sighand->count))
336 kmem_cache_free(sighand_cachep, sighand);
337}
338
339/*
340 * This function expects the tasklist_lock write-locked.
341 */
342void __exit_signal(struct task_struct *tsk) 327void __exit_signal(struct task_struct *tsk)
343{ 328{
344 struct signal_struct *sig = tsk->signal; 329 struct signal_struct *sig = tsk->signal;
@@ -386,7 +371,7 @@ void __exit_signal(struct task_struct *tsk)
386 } 371 }
387 372
388 tsk->signal = NULL; 373 tsk->signal = NULL;
389 __exit_sighand(tsk); 374 cleanup_sighand(tsk);
390 spin_unlock(&sighand->siglock); 375 spin_unlock(&sighand->siglock);
391 rcu_read_unlock(); 376 rcu_read_unlock();
392 377