diff options
Diffstat (limited to 'fs/proc/array.c')
| -rw-r--r-- | fs/proc/array.c | 17 | 
1 files changed, 10 insertions, 7 deletions
| diff --git a/fs/proc/array.c b/fs/proc/array.c index 3a1dafd228d1..c602b8d20f06 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -380,7 +380,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,  	state = *get_task_state(task);  	vsize = eip = esp = 0; -	permitted = ptrace_may_access(task, PTRACE_MODE_READ); +	permitted = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT);  	mm = get_task_mm(task);  	if (mm) {  		vsize = task_vsize(mm); @@ -394,8 +394,8 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,  	sigemptyset(&sigign);  	sigemptyset(&sigcatch); -	cutime = cstime = utime = stime = cputime_zero; -	cgtime = gtime = cputime_zero; +	cutime = cstime = utime = stime = 0; +	cgtime = gtime = 0;  	if (lock_task_sighand(task, &flags)) {  		struct signal_struct *sig = task->signal; @@ -423,14 +423,14 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,  			do {  				min_flt += t->min_flt;  				maj_flt += t->maj_flt; -				gtime = cputime_add(gtime, t->gtime); +				gtime += t->gtime;  				t = next_thread(t);  			} while (t != task);  			min_flt += sig->min_flt;  			maj_flt += sig->maj_flt;  			thread_group_times(task, &utime, &stime); -			gtime = cputime_add(gtime, sig->gtime); +			gtime += sig->gtime;  		}  		sid = task_session_nr_ns(task, ns); @@ -464,7 +464,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,  	seq_printf(m, "%d (%s) %c %d %d %d %d %d %u %lu \  %lu %lu %lu %lu %lu %ld %ld %ld %ld %d 0 %llu %lu %ld %lu %lu %lu %lu %lu \ -%lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ld\n", +%lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ld %lu %lu %lu\n",  		pid_nr_ns(pid, ns),  		tcomm,  		state, @@ -511,7 +511,10 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,  		task->policy,  		(unsigned long long)delayacct_blkio_ticks(task),  		cputime_to_clock_t(gtime), -		cputime_to_clock_t(cgtime)); +		cputime_to_clock_t(cgtime), +		(mm && permitted) ? mm->start_data : 0, +		(mm && permitted) ? mm->end_data : 0, +		(mm && permitted) ? mm->start_brk : 0);  	if (mm)  		mmput(mm);  	return 0; | 
