diff options
Diffstat (limited to 'kernel/signal.c')
| -rw-r--r-- | kernel/signal.c | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 3d09cf6cde7..7f82adbad48 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1632,6 +1632,7 @@ bool do_notify_parent(struct task_struct *tsk, int sig)  	unsigned long flags;  	struct sighand_struct *psig;  	bool autoreap = false; +	cputime_t utime, stime;  	BUG_ON(sig == -1); @@ -1669,8 +1670,9 @@ bool do_notify_parent(struct task_struct *tsk, int sig)  				       task_uid(tsk));  	rcu_read_unlock(); -	info.si_utime = cputime_to_clock_t(tsk->utime + tsk->signal->utime); -	info.si_stime = cputime_to_clock_t(tsk->stime + tsk->signal->stime); +	task_cputime(tsk, &utime, &stime); +	info.si_utime = cputime_to_clock_t(utime + tsk->signal->utime); +	info.si_stime = cputime_to_clock_t(stime + tsk->signal->stime);  	info.si_status = tsk->exit_code & 0x7f;  	if (tsk->exit_code & 0x80) @@ -1734,6 +1736,7 @@ static void do_notify_parent_cldstop(struct task_struct *tsk,  	unsigned long flags;  	struct task_struct *parent;  	struct sighand_struct *sighand; +	cputime_t utime, stime;  	if (for_ptracer) {  		parent = tsk->parent; @@ -1752,8 +1755,9 @@ static void do_notify_parent_cldstop(struct task_struct *tsk,  	info.si_uid = from_kuid_munged(task_cred_xxx(parent, user_ns), task_uid(tsk));  	rcu_read_unlock(); -	info.si_utime = cputime_to_clock_t(tsk->utime); -	info.si_stime = cputime_to_clock_t(tsk->stime); +	task_cputime(tsk, &utime, &stime); +	info.si_utime = cputime_to_clock_t(utime); +	info.si_stime = cputime_to_clock_t(stime);   	info.si_code = why;   	switch (why) {  |