diff options
Diffstat (limited to 'fs/proc/array.c')
-rw-r--r-- | fs/proc/array.c | 189 |
1 files changed, 92 insertions, 97 deletions
diff --git a/fs/proc/array.c b/fs/proc/array.c index 88c7de12197b..89600fd5963d 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c | |||
@@ -186,51 +186,45 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, | |||
186 | task_unlock(p); | 186 | task_unlock(p); |
187 | rcu_read_unlock(); | 187 | rcu_read_unlock(); |
188 | 188 | ||
189 | seq_printf(m, | 189 | seq_printf(m, "State:\t%s", get_task_state(p)); |
190 | "State:\t%s\n" | 190 | |
191 | "Tgid:\t%d\n" | 191 | seq_put_decimal_ull(m, "\nTgid:\t", tgid); |
192 | "Ngid:\t%d\n" | 192 | seq_put_decimal_ull(m, "\nNgid:\t", ngid); |
193 | "Pid:\t%d\n" | 193 | seq_put_decimal_ull(m, "\nPid:\t", pid_nr_ns(pid, ns)); |
194 | "PPid:\t%d\n" | 194 | seq_put_decimal_ull(m, "\nPPid:\t", ppid); |
195 | "TracerPid:\t%d\n" | 195 | seq_put_decimal_ull(m, "\nTracerPid:\t", tpid); |
196 | "Uid:\t%d\t%d\t%d\t%d\n" | 196 | seq_put_decimal_ull(m, "\nUid:\t", from_kuid_munged(user_ns, cred->uid)); |
197 | "Gid:\t%d\t%d\t%d\t%d\n" | 197 | seq_put_decimal_ull(m, "\t", from_kuid_munged(user_ns, cred->euid)); |
198 | "FDSize:\t%d\nGroups:\t", | 198 | seq_put_decimal_ull(m, "\t", from_kuid_munged(user_ns, cred->suid)); |
199 | get_task_state(p), | 199 | seq_put_decimal_ull(m, "\t", from_kuid_munged(user_ns, cred->fsuid)); |
200 | tgid, ngid, pid_nr_ns(pid, ns), ppid, tpid, | 200 | seq_put_decimal_ull(m, "\nGid:\t", from_kgid_munged(user_ns, cred->gid)); |
201 | from_kuid_munged(user_ns, cred->uid), | 201 | seq_put_decimal_ull(m, "\t", from_kgid_munged(user_ns, cred->egid)); |
202 | from_kuid_munged(user_ns, cred->euid), | 202 | seq_put_decimal_ull(m, "\t", from_kgid_munged(user_ns, cred->sgid)); |
203 | from_kuid_munged(user_ns, cred->suid), | 203 | seq_put_decimal_ull(m, "\t", from_kgid_munged(user_ns, cred->fsgid)); |
204 | from_kuid_munged(user_ns, cred->fsuid), | 204 | seq_put_decimal_ull(m, "\nFDSize:\t", max_fds); |
205 | from_kgid_munged(user_ns, cred->gid), | 205 | |
206 | from_kgid_munged(user_ns, cred->egid), | 206 | seq_puts(m, "\nGroups:\t"); |
207 | from_kgid_munged(user_ns, cred->sgid), | ||
208 | from_kgid_munged(user_ns, cred->fsgid), | ||
209 | max_fds); | ||
210 | |||
211 | group_info = cred->group_info; | 207 | group_info = cred->group_info; |
212 | for (g = 0; g < group_info->ngroups; g++) | 208 | for (g = 0; g < group_info->ngroups; g++) |
213 | seq_printf(m, "%d ", | 209 | seq_put_decimal_ull(m, g ? " " : "", |
214 | from_kgid_munged(user_ns, GROUP_AT(group_info, g))); | 210 | from_kgid_munged(user_ns, group_info->gid[g])); |
215 | put_cred(cred); | 211 | put_cred(cred); |
212 | /* Trailing space shouldn't have been added in the first place. */ | ||
213 | seq_putc(m, ' '); | ||
216 | 214 | ||
217 | #ifdef CONFIG_PID_NS | 215 | #ifdef CONFIG_PID_NS |
218 | seq_puts(m, "\nNStgid:"); | 216 | seq_puts(m, "\nNStgid:"); |
219 | for (g = ns->level; g <= pid->level; g++) | 217 | for (g = ns->level; g <= pid->level; g++) |
220 | seq_printf(m, "\t%d", | 218 | seq_put_decimal_ull(m, "\t", task_tgid_nr_ns(p, pid->numbers[g].ns)); |
221 | task_tgid_nr_ns(p, pid->numbers[g].ns)); | ||
222 | seq_puts(m, "\nNSpid:"); | 219 | seq_puts(m, "\nNSpid:"); |
223 | for (g = ns->level; g <= pid->level; g++) | 220 | for (g = ns->level; g <= pid->level; g++) |
224 | seq_printf(m, "\t%d", | 221 | seq_put_decimal_ull(m, "\t", task_pid_nr_ns(p, pid->numbers[g].ns)); |
225 | task_pid_nr_ns(p, pid->numbers[g].ns)); | ||
226 | seq_puts(m, "\nNSpgid:"); | 222 | seq_puts(m, "\nNSpgid:"); |
227 | for (g = ns->level; g <= pid->level; g++) | 223 | for (g = ns->level; g <= pid->level; g++) |
228 | seq_printf(m, "\t%d", | 224 | seq_put_decimal_ull(m, "\t", task_pgrp_nr_ns(p, pid->numbers[g].ns)); |
229 | task_pgrp_nr_ns(p, pid->numbers[g].ns)); | ||
230 | seq_puts(m, "\nNSsid:"); | 225 | seq_puts(m, "\nNSsid:"); |
231 | for (g = ns->level; g <= pid->level; g++) | 226 | for (g = ns->level; g <= pid->level; g++) |
232 | seq_printf(m, "\t%d", | 227 | seq_put_decimal_ull(m, "\t", task_session_nr_ns(p, pid->numbers[g].ns)); |
233 | task_session_nr_ns(p, pid->numbers[g].ns)); | ||
234 | #endif | 228 | #endif |
235 | seq_putc(m, '\n'); | 229 | seq_putc(m, '\n'); |
236 | } | 230 | } |
@@ -299,11 +293,12 @@ static inline void task_sig(struct seq_file *m, struct task_struct *p) | |||
299 | unlock_task_sighand(p, &flags); | 293 | unlock_task_sighand(p, &flags); |
300 | } | 294 | } |
301 | 295 | ||
302 | seq_printf(m, "Threads:\t%d\n", num_threads); | 296 | seq_put_decimal_ull(m, "Threads:\t", num_threads); |
303 | seq_printf(m, "SigQ:\t%lu/%lu\n", qsize, qlim); | 297 | seq_put_decimal_ull(m, "\nSigQ:\t", qsize); |
298 | seq_put_decimal_ull(m, "/", qlim); | ||
304 | 299 | ||
305 | /* render them all */ | 300 | /* render them all */ |
306 | render_sigset_t(m, "SigPnd:\t", &pending); | 301 | render_sigset_t(m, "\nSigPnd:\t", &pending); |
307 | render_sigset_t(m, "ShdPnd:\t", &shpending); | 302 | render_sigset_t(m, "ShdPnd:\t", &shpending); |
308 | render_sigset_t(m, "SigBlk:\t", &blocked); | 303 | render_sigset_t(m, "SigBlk:\t", &blocked); |
309 | render_sigset_t(m, "SigIgn:\t", &ignored); | 304 | render_sigset_t(m, "SigIgn:\t", &ignored); |
@@ -348,17 +343,17 @@ static inline void task_cap(struct seq_file *m, struct task_struct *p) | |||
348 | static inline void task_seccomp(struct seq_file *m, struct task_struct *p) | 343 | static inline void task_seccomp(struct seq_file *m, struct task_struct *p) |
349 | { | 344 | { |
350 | #ifdef CONFIG_SECCOMP | 345 | #ifdef CONFIG_SECCOMP |
351 | seq_printf(m, "Seccomp:\t%d\n", p->seccomp.mode); | 346 | seq_put_decimal_ull(m, "Seccomp:\t", p->seccomp.mode); |
347 | seq_putc(m, '\n'); | ||
352 | #endif | 348 | #endif |
353 | } | 349 | } |
354 | 350 | ||
355 | static inline void task_context_switch_counts(struct seq_file *m, | 351 | static inline void task_context_switch_counts(struct seq_file *m, |
356 | struct task_struct *p) | 352 | struct task_struct *p) |
357 | { | 353 | { |
358 | seq_printf(m, "voluntary_ctxt_switches:\t%lu\n" | 354 | seq_put_decimal_ull(m, "voluntary_ctxt_switches:\t", p->nvcsw); |
359 | "nonvoluntary_ctxt_switches:\t%lu\n", | 355 | seq_put_decimal_ull(m, "\nnonvoluntary_ctxt_switches:\t", p->nivcsw); |
360 | p->nvcsw, | 356 | seq_putc(m, '\n'); |
361 | p->nivcsw); | ||
362 | } | 357 | } |
363 | 358 | ||
364 | static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) | 359 | static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) |
@@ -490,41 +485,41 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, | |||
490 | start_time = nsec_to_clock_t(task->real_start_time); | 485 | start_time = nsec_to_clock_t(task->real_start_time); |
491 | 486 | ||
492 | seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state); | 487 | seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state); |
493 | seq_put_decimal_ll(m, ' ', ppid); | 488 | seq_put_decimal_ll(m, " ", ppid); |
494 | seq_put_decimal_ll(m, ' ', pgid); | 489 | seq_put_decimal_ll(m, " ", pgid); |
495 | seq_put_decimal_ll(m, ' ', sid); | 490 | seq_put_decimal_ll(m, " ", sid); |
496 | seq_put_decimal_ll(m, ' ', tty_nr); | 491 | seq_put_decimal_ll(m, " ", tty_nr); |
497 | seq_put_decimal_ll(m, ' ', tty_pgrp); | 492 | seq_put_decimal_ll(m, " ", tty_pgrp); |
498 | seq_put_decimal_ull(m, ' ', task->flags); | 493 | seq_put_decimal_ull(m, " ", task->flags); |
499 | seq_put_decimal_ull(m, ' ', min_flt); | 494 | seq_put_decimal_ull(m, " ", min_flt); |
500 | seq_put_decimal_ull(m, ' ', cmin_flt); | 495 | seq_put_decimal_ull(m, " ", cmin_flt); |
501 | seq_put_decimal_ull(m, ' ', maj_flt); | 496 | seq_put_decimal_ull(m, " ", maj_flt); |
502 | seq_put_decimal_ull(m, ' ', cmaj_flt); | 497 | seq_put_decimal_ull(m, " ", cmaj_flt); |
503 | seq_put_decimal_ull(m, ' ', cputime_to_clock_t(utime)); | 498 | seq_put_decimal_ull(m, " ", cputime_to_clock_t(utime)); |
504 | seq_put_decimal_ull(m, ' ', cputime_to_clock_t(stime)); | 499 | seq_put_decimal_ull(m, " ", cputime_to_clock_t(stime)); |
505 | seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cutime)); | 500 | seq_put_decimal_ll(m, " ", cputime_to_clock_t(cutime)); |
506 | seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cstime)); | 501 | seq_put_decimal_ll(m, " ", cputime_to_clock_t(cstime)); |
507 | seq_put_decimal_ll(m, ' ', priority); | 502 | seq_put_decimal_ll(m, " ", priority); |
508 | seq_put_decimal_ll(m, ' ', nice); | 503 | seq_put_decimal_ll(m, " ", nice); |
509 | seq_put_decimal_ll(m, ' ', num_threads); | 504 | seq_put_decimal_ll(m, " ", num_threads); |
510 | seq_put_decimal_ull(m, ' ', 0); | 505 | seq_put_decimal_ull(m, " ", 0); |
511 | seq_put_decimal_ull(m, ' ', start_time); | 506 | seq_put_decimal_ull(m, " ", start_time); |
512 | seq_put_decimal_ull(m, ' ', vsize); | 507 | seq_put_decimal_ull(m, " ", vsize); |
513 | seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0); | 508 | seq_put_decimal_ull(m, " ", mm ? get_mm_rss(mm) : 0); |
514 | seq_put_decimal_ull(m, ' ', rsslim); | 509 | seq_put_decimal_ull(m, " ", rsslim); |
515 | seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->start_code : 1) : 0); | 510 | seq_put_decimal_ull(m, " ", mm ? (permitted ? mm->start_code : 1) : 0); |
516 | seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->end_code : 1) : 0); | 511 | seq_put_decimal_ull(m, " ", mm ? (permitted ? mm->end_code : 1) : 0); |
517 | seq_put_decimal_ull(m, ' ', (permitted && mm) ? mm->start_stack : 0); | 512 | seq_put_decimal_ull(m, " ", (permitted && mm) ? mm->start_stack : 0); |
518 | seq_put_decimal_ull(m, ' ', esp); | 513 | seq_put_decimal_ull(m, " ", esp); |
519 | seq_put_decimal_ull(m, ' ', eip); | 514 | seq_put_decimal_ull(m, " ", eip); |
520 | /* The signal information here is obsolete. | 515 | /* The signal information here is obsolete. |
521 | * It must be decimal for Linux 2.0 compatibility. | 516 | * It must be decimal for Linux 2.0 compatibility. |
522 | * Use /proc/#/status for real-time signals. | 517 | * Use /proc/#/status for real-time signals. |
523 | */ | 518 | */ |
524 | seq_put_decimal_ull(m, ' ', task->pending.signal.sig[0] & 0x7fffffffUL); | 519 | seq_put_decimal_ull(m, " ", task->pending.signal.sig[0] & 0x7fffffffUL); |
525 | seq_put_decimal_ull(m, ' ', task->blocked.sig[0] & 0x7fffffffUL); | 520 | seq_put_decimal_ull(m, " ", task->blocked.sig[0] & 0x7fffffffUL); |
526 | seq_put_decimal_ull(m, ' ', sigign.sig[0] & 0x7fffffffUL); | 521 | seq_put_decimal_ull(m, " ", sigign.sig[0] & 0x7fffffffUL); |
527 | seq_put_decimal_ull(m, ' ', sigcatch.sig[0] & 0x7fffffffUL); | 522 | seq_put_decimal_ull(m, " ", sigcatch.sig[0] & 0x7fffffffUL); |
528 | 523 | ||
529 | /* | 524 | /* |
530 | * We used to output the absolute kernel address, but that's an | 525 | * We used to output the absolute kernel address, but that's an |
@@ -538,31 +533,31 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, | |||
538 | else | 533 | else |
539 | seq_puts(m, " 0"); | 534 | seq_puts(m, " 0"); |
540 | 535 | ||
541 | seq_put_decimal_ull(m, ' ', 0); | 536 | seq_put_decimal_ull(m, " ", 0); |
542 | seq_put_decimal_ull(m, ' ', 0); | 537 | seq_put_decimal_ull(m, " ", 0); |
543 | seq_put_decimal_ll(m, ' ', task->exit_signal); | 538 | seq_put_decimal_ll(m, " ", task->exit_signal); |
544 | seq_put_decimal_ll(m, ' ', task_cpu(task)); | 539 | seq_put_decimal_ll(m, " ", task_cpu(task)); |
545 | seq_put_decimal_ull(m, ' ', task->rt_priority); | 540 | seq_put_decimal_ull(m, " ", task->rt_priority); |
546 | seq_put_decimal_ull(m, ' ', task->policy); | 541 | seq_put_decimal_ull(m, " ", task->policy); |
547 | seq_put_decimal_ull(m, ' ', delayacct_blkio_ticks(task)); | 542 | seq_put_decimal_ull(m, " ", delayacct_blkio_ticks(task)); |
548 | seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime)); | 543 | seq_put_decimal_ull(m, " ", cputime_to_clock_t(gtime)); |
549 | seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime)); | 544 | seq_put_decimal_ll(m, " ", cputime_to_clock_t(cgtime)); |
550 | 545 | ||
551 | if (mm && permitted) { | 546 | if (mm && permitted) { |
552 | seq_put_decimal_ull(m, ' ', mm->start_data); | 547 | seq_put_decimal_ull(m, " ", mm->start_data); |
553 | seq_put_decimal_ull(m, ' ', mm->end_data); | 548 | seq_put_decimal_ull(m, " ", mm->end_data); |
554 | seq_put_decimal_ull(m, ' ', mm->start_brk); | 549 | seq_put_decimal_ull(m, " ", mm->start_brk); |
555 | seq_put_decimal_ull(m, ' ', mm->arg_start); | 550 | seq_put_decimal_ull(m, " ", mm->arg_start); |
556 | seq_put_decimal_ull(m, ' ', mm->arg_end); | 551 | seq_put_decimal_ull(m, " ", mm->arg_end); |
557 | seq_put_decimal_ull(m, ' ', mm->env_start); | 552 | seq_put_decimal_ull(m, " ", mm->env_start); |
558 | seq_put_decimal_ull(m, ' ', mm->env_end); | 553 | seq_put_decimal_ull(m, " ", mm->env_end); |
559 | } else | 554 | } else |
560 | seq_printf(m, " 0 0 0 0 0 0 0"); | 555 | seq_puts(m, " 0 0 0 0 0 0 0"); |
561 | 556 | ||
562 | if (permitted) | 557 | if (permitted) |
563 | seq_put_decimal_ll(m, ' ', task->exit_code); | 558 | seq_put_decimal_ll(m, " ", task->exit_code); |
564 | else | 559 | else |
565 | seq_put_decimal_ll(m, ' ', 0); | 560 | seq_puts(m, " 0"); |
566 | 561 | ||
567 | seq_putc(m, '\n'); | 562 | seq_putc(m, '\n'); |
568 | if (mm) | 563 | if (mm) |
@@ -598,13 +593,13 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns, | |||
598 | * seq_printf(m, "%lu %lu %lu %lu 0 %lu 0\n", | 593 | * seq_printf(m, "%lu %lu %lu %lu 0 %lu 0\n", |
599 | * size, resident, shared, text, data); | 594 | * size, resident, shared, text, data); |
600 | */ | 595 | */ |
601 | seq_put_decimal_ull(m, 0, size); | 596 | seq_put_decimal_ull(m, "", size); |
602 | seq_put_decimal_ull(m, ' ', resident); | 597 | seq_put_decimal_ull(m, " ", resident); |
603 | seq_put_decimal_ull(m, ' ', shared); | 598 | seq_put_decimal_ull(m, " ", shared); |
604 | seq_put_decimal_ull(m, ' ', text); | 599 | seq_put_decimal_ull(m, " ", text); |
605 | seq_put_decimal_ull(m, ' ', 0); | 600 | seq_put_decimal_ull(m, " ", 0); |
606 | seq_put_decimal_ull(m, ' ', data); | 601 | seq_put_decimal_ull(m, " ", data); |
607 | seq_put_decimal_ull(m, ' ', 0); | 602 | seq_put_decimal_ull(m, " ", 0); |
608 | seq_putc(m, '\n'); | 603 | seq_putc(m, '\n'); |
609 | 604 | ||
610 | return 0; | 605 | return 0; |