Commit b3f7f573a20081910e34e99cbc91831f4f02f1ff
Committed by
Linus Torvalds
1 parent
067bce1a06
Exists in
master
and in
6 other branches
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: Cyrill Gorcunov <gorcunov@openvz.org> Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Reviewed-by: Kees Cook <keescook@chromium.org> Reviewed-by: KAMEZAWA 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: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 2 changed files with 8 additions and 2 deletions Side-by-side Diff
Documentation/filesystems/proc.txt
... | ... | @@ -307,6 +307,9 @@ |
307 | 307 | blkio_ticks time spent waiting for block IO |
308 | 308 | gtime guest time of the task in jiffies |
309 | 309 | cgtime guest time of the task children in jiffies |
310 | + start_data address above which program data+bss is placed | |
311 | + end_data address below which program data+bss is placed | |
312 | + start_brk address above which program heap can be expanded with brk() | |
310 | 313 | .............................................................................. |
311 | 314 | |
312 | 315 | The /proc/PID/maps file containing the currently mapped memory regions and |
fs/proc/array.c
... | ... | @@ -464,7 +464,7 @@ |
464 | 464 | |
465 | 465 | seq_printf(m, "%d (%s) %c %d %d %d %d %d %u %lu \ |
466 | 466 | %lu %lu %lu %lu %lu %ld %ld %ld %ld %d 0 %llu %lu %ld %lu %lu %lu %lu %lu \ |
467 | -%lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ld\n", | |
467 | +%lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ld %lu %lu %lu\n", | |
468 | 468 | pid_nr_ns(pid, ns), |
469 | 469 | tcomm, |
470 | 470 | state, |
... | ... | @@ -511,7 +511,10 @@ |
511 | 511 | task->policy, |
512 | 512 | (unsigned long long)delayacct_blkio_ticks(task), |
513 | 513 | cputime_to_clock_t(gtime), |
514 | - cputime_to_clock_t(cgtime)); | |
514 | + cputime_to_clock_t(cgtime), | |
515 | + (mm && permitted) ? mm->start_data : 0, | |
516 | + (mm && permitted) ? mm->end_data : 0, | |
517 | + (mm && permitted) ? mm->start_brk : 0); | |
515 | 518 | if (mm) |
516 | 519 | mmput(mm); |
517 | 520 | return 0; |