diff options
Diffstat (limited to 'fs/proc/array.c')
| -rw-r--r-- | fs/proc/array.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/fs/proc/array.c b/fs/proc/array.c index ff869a66b34e..43a7abde9e42 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -468,6 +468,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,  	u64 cgtime, gtime;  	unsigned long rsslim = 0;  	unsigned long flags; +	int exit_code = task->exit_code;  	state = *get_task_state(task);  	vsize = eip = esp = 0; @@ -531,6 +532,9 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,  			maj_flt += sig->maj_flt;  			thread_group_cputime_adjusted(task, &utime, &stime);  			gtime += sig->gtime; + +			if (sig->flags & (SIGNAL_GROUP_EXIT | SIGNAL_STOP_STOPPED)) +				exit_code = sig->group_exit_code;  		}  		sid = task_session_nr_ns(task, ns); @@ -630,7 +634,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,  		seq_puts(m, " 0 0 0 0 0 0 0");  	if (permitted) -		seq_put_decimal_ll(m, " ", task->exit_code); +		seq_put_decimal_ll(m, " ", exit_code);  	else  		seq_puts(m, " 0"); | 
