diff options
Diffstat (limited to 'fs/binfmt_elf_fdpic.c')
| -rw-r--r-- | fs/binfmt_elf_fdpic.c | 19 | 
1 files changed, 7 insertions, 12 deletions
diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c index 0e8367c5462..5b5424cb339 100644 --- a/fs/binfmt_elf_fdpic.c +++ b/fs/binfmt_elf_fdpic.c @@ -1390,20 +1390,15 @@ static void fill_prstatus(struct elf_prstatus *prstatus,  	prstatus->pr_pgrp = task_pgrp_vnr(p);  	prstatus->pr_sid = task_session_vnr(p);  	if (thread_group_leader(p)) { +		struct task_cputime cputime; +  		/* -		 * This is the record for the group leader.  Add in the -		 * cumulative times of previous dead threads.  This total -		 * won't include the time of each live thread whose state -		 * is included in the core dump.  The final total reported -		 * to our parent process when it calls wait4 will include -		 * those sums as well as the little bit more time it takes -		 * this and each other thread to finish dying after the -		 * core dump synchronization phase. +		 * This is the record for the group leader.  It shows the +		 * group-wide total, not its individual thread total.  		 */ -		cputime_to_timeval(cputime_add(p->utime, p->signal->utime), -				   &prstatus->pr_utime); -		cputime_to_timeval(cputime_add(p->stime, p->signal->stime), -				   &prstatus->pr_stime); +		thread_group_cputime(p, &cputime); +		cputime_to_timeval(cputime.utime, &prstatus->pr_utime); +		cputime_to_timeval(cputime.stime, &prstatus->pr_stime);  	} else {  		cputime_to_timeval(p->utime, &prstatus->pr_utime);  		cputime_to_timeval(p->stime, &prstatus->pr_stime);  |