From 1ad60672c6a7f6c4b2c33b0c1b193ab20c6141b9 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Sat, 28 Oct 2006 10:38:51 -0700 Subject: [PATCH] --- yaml --- r: 40411 b: refs/heads/master c: 093a8e8aecd77b2799934996a55a6838e1e2b8f3 h: refs/heads/master i: 40409: ebcc921e4a1e94b101a3c6fb765a0de9a06a93cd 40407: 898ba72569af265edf27e0f69c09220c80f33f38 v: v3 --- [refs] | 2 +- trunk/include/linux/taskstats_kern.h | 13 ++----------- trunk/kernel/exit.c | 1 + trunk/kernel/fork.c | 1 - 4 files changed, 4 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index 670b8b2e9e34..fe86bfa044de 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 05d5bcd60e8202e5c7b28cf61186043a4d612623 +refs/heads/master: 093a8e8aecd77b2799934996a55a6838e1e2b8f3 diff --git a/trunk/include/linux/taskstats_kern.h b/trunk/include/linux/taskstats_kern.h index 16894b7edcc8..a437ca0d226b 100644 --- a/trunk/include/linux/taskstats_kern.h +++ b/trunk/include/linux/taskstats_kern.h @@ -49,17 +49,8 @@ static inline void taskstats_tgid_alloc(struct signal_struct *sig) static inline void taskstats_tgid_free(struct signal_struct *sig) { - struct taskstats *stats = NULL; - unsigned long flags; - - spin_lock_irqsave(&sig->stats_lock, flags); - if (sig->stats) { - stats = sig->stats; - sig->stats = NULL; - } - spin_unlock_irqrestore(&sig->stats_lock, flags); - if (stats) - kmem_cache_free(taskstats_cache, stats); + if (sig->stats) + kmem_cache_free(taskstats_cache, sig->stats); } extern void taskstats_exit_alloc(struct taskstats **, unsigned int *); diff --git a/trunk/kernel/exit.c b/trunk/kernel/exit.c index f250a5e3e281..06de6c4e8ca3 100644 --- a/trunk/kernel/exit.c +++ b/trunk/kernel/exit.c @@ -128,6 +128,7 @@ static void __exit_signal(struct task_struct *tsk) flush_sigqueue(&tsk->pending); if (sig) { flush_sigqueue(&sig->shared_pending); + taskstats_tgid_free(sig); __cleanup_signal(sig); } } diff --git a/trunk/kernel/fork.c b/trunk/kernel/fork.c index 29ebb30850ed..213326609bac 100644 --- a/trunk/kernel/fork.c +++ b/trunk/kernel/fork.c @@ -897,7 +897,6 @@ static inline int copy_signal(unsigned long clone_flags, struct task_struct * ts void __cleanup_signal(struct signal_struct *sig) { exit_thread_group_keys(sig); - taskstats_tgid_free(sig); kmem_cache_free(signal_cachep, sig); }