diff options
Diffstat (limited to 'kernel/exit.c')
| -rw-r--r-- | kernel/exit.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index b4df2193721..7dd20408707 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -85,6 +85,7 @@ static void __exit_signal(struct task_struct *tsk)  	bool group_dead = thread_group_leader(tsk);  	struct sighand_struct *sighand;  	struct tty_struct *uninitialized_var(tty); +	cputime_t utime, stime;  	sighand = rcu_dereference_check(tsk->sighand,  					lockdep_tasklist_lock_is_held()); @@ -123,9 +124,10 @@ static void __exit_signal(struct task_struct *tsk)  		 * We won't ever get here for the group leader, since it  		 * will have been the last reference on the signal_struct.  		 */ -		sig->utime += tsk->utime; -		sig->stime += tsk->stime; -		sig->gtime += tsk->gtime; +		task_cputime(tsk, &utime, &stime); +		sig->utime += utime; +		sig->stime += stime; +		sig->gtime += task_gtime(tsk);  		sig->min_flt += tsk->min_flt;  		sig->maj_flt += tsk->maj_flt;  		sig->nvcsw += tsk->nvcsw; @@ -1092,7 +1094,7 @@ static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p)  		sig = p->signal;  		psig->cutime += tgutime + sig->cutime;  		psig->cstime += tgstime + sig->cstime; -		psig->cgtime += p->gtime + sig->gtime + sig->cgtime; +		psig->cgtime += task_gtime(p) + sig->gtime + sig->cgtime;  		psig->cmin_flt +=  			p->min_flt + sig->min_flt + sig->cmin_flt;  		psig->cmaj_flt +=  |