Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b3f7f573 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Linus Torvalds
Browse files

c/r: procfs: add start_data, end_data, start_brk members to /proc/$pid/stat v4



The mm->start_code/end_code, mm->start_data/end_data, mm->start_brk are
involved into calculation of program text/data segment sizes (which might
be seen in /proc/<pid>/statm) and into brk() call final address.

For restore we need to know all these values.  While
mm->start_code/end_code already present in /proc/$pid/stat, the rest
members are not, so this patch brings them in.

The restore procedure of these members is addressed in another patch using
prctl().

Signed-off-by: default avatarCyrill Gorcunov <gorcunov@openvz.org>
Acked-by: default avatarSerge Hallyn <serge.hallyn@canonical.com>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Andrew Vagin <avagin@openvz.org>
Cc: Vasiliy Kulikov <segoon@openwall.com>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 067bce1a
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -307,6 +307,9 @@ Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
  blkio_ticks   time spent waiting for block IO
  blkio_ticks   time spent waiting for block IO
  gtime         guest time of the task in jiffies
  gtime         guest time of the task in jiffies
  cgtime        guest time of the task children in jiffies
  cgtime        guest time of the task children in jiffies
  start_data    address above which program data+bss is placed
  end_data      address below which program data+bss is placed
  start_brk     address above which program heap can be expanded with brk()
..............................................................................
..............................................................................


The /proc/PID/maps file containing the currently mapped memory regions and
The /proc/PID/maps file containing the currently mapped memory regions and
+5 −2
Original line number Original line Diff line number Diff line
@@ -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 \
	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 %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),
		pid_nr_ns(pid, ns),
		tcomm,
		tcomm,
		state,
		state,
@@ -511,7 +511,10 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
		task->policy,
		task->policy,
		(unsigned long long)delayacct_blkio_ticks(task),
		(unsigned long long)delayacct_blkio_ticks(task),
		cputime_to_clock_t(gtime),
		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)
	if (mm)
		mmput(mm);
		mmput(mm);
	return 0;
	return 0;