diff options
Diffstat (limited to 'kernel/signal.c')
| -rw-r--r-- | kernel/signal.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index e661b01d340..105217da5c8 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -27,6 +27,7 @@  #include <linux/freezer.h>  #include <linux/pid_namespace.h>  #include <linux/nsproxy.h> +#include <trace/sched.h>  #include <asm/param.h>  #include <asm/uaccess.h> @@ -803,6 +804,8 @@ static int send_signal(int sig, struct siginfo *info, struct task_struct *t,  	struct sigpending *pending;  	struct sigqueue *q; +	trace_sched_signal_send(sig, t); +  	assert_spin_locked(&t->sighand->siglock);  	if (!prepare_signal(sig, t))  		return 0; @@ -1338,6 +1341,7 @@ int do_notify_parent(struct task_struct *tsk, int sig)  	struct siginfo info;  	unsigned long flags;  	struct sighand_struct *psig; +	struct task_cputime cputime;  	int ret = sig;  	BUG_ON(sig == -1); @@ -1368,10 +1372,9 @@ int do_notify_parent(struct task_struct *tsk, int sig)  	info.si_uid = tsk->uid; -	info.si_utime = cputime_to_clock_t(cputime_add(tsk->utime, -						       tsk->signal->utime)); -	info.si_stime = cputime_to_clock_t(cputime_add(tsk->stime, -						       tsk->signal->stime)); +	thread_group_cputime(tsk, &cputime); +	info.si_utime = cputime_to_jiffies(cputime.utime); +	info.si_stime = cputime_to_jiffies(cputime.stime);  	info.si_status = tsk->exit_code & 0x7f;  	if (tsk->exit_code & 0x80)  |