proc: seqfile convert proc_pid_status to properly handle pid namespaces
Currently we possibly lookup the pid in the wrong pid namespace. So seq_file convert proc_pid_status which ensures the proper pid namespaces is passed in. [akpm@linux-foundation.org: coding-style fixes] [akpm@linux-foundation.org: build fix] [akpm@linux-foundation.org: another build fix] [akpm@linux-foundation.org: s390 build fix] [akpm@linux-foundation.org: fix task_name() output] [akpm@linux-foundation.org: fix nommu build] Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Cc: Andrew Morgan <morgan@kernel.org> Cc: Serge Hallyn <serue@us.ibm.com> Cc: Cedric Le Goater <clg@fr.ibm.com> Cc: Pavel Emelyanov <xemul@openvz.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Paul Menage <menage@google.com> Cc: Paul Jackson <pj@sgi.com> Cc: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
a56d3fc74c
commit
df5f8314ca
@@ -24,6 +24,7 @@
|
||||
#include <linux/smp.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kdebug.h>
|
||||
@@ -218,41 +219,40 @@ void show_registers(struct pt_regs *regs)
|
||||
}
|
||||
|
||||
/* This is called from fs/proc/array.c */
|
||||
char *task_show_regs(struct task_struct *task, char *buffer)
|
||||
void task_show_regs(struct seq_file *m, struct task_struct *task)
|
||||
{
|
||||
struct pt_regs *regs;
|
||||
|
||||
regs = task_pt_regs(task);
|
||||
buffer += sprintf(buffer, "task: %p, ksp: %p\n",
|
||||
seq_printf(m, "task: %p, ksp: %p\n",
|
||||
task, (void *)task->thread.ksp);
|
||||
buffer += sprintf(buffer, "User PSW : %p %p\n",
|
||||
seq_printf(m, "User PSW : %p %p\n",
|
||||
(void *) regs->psw.mask, (void *)regs->psw.addr);
|
||||
|
||||
buffer += sprintf(buffer, "User GPRS: " FOURLONG,
|
||||
seq_printf(m, "User GPRS: " FOURLONG,
|
||||
regs->gprs[0], regs->gprs[1],
|
||||
regs->gprs[2], regs->gprs[3]);
|
||||
buffer += sprintf(buffer, " " FOURLONG,
|
||||
seq_printf(m, " " FOURLONG,
|
||||
regs->gprs[4], regs->gprs[5],
|
||||
regs->gprs[6], regs->gprs[7]);
|
||||
buffer += sprintf(buffer, " " FOURLONG,
|
||||
seq_printf(m, " " FOURLONG,
|
||||
regs->gprs[8], regs->gprs[9],
|
||||
regs->gprs[10], regs->gprs[11]);
|
||||
buffer += sprintf(buffer, " " FOURLONG,
|
||||
seq_printf(m, " " FOURLONG,
|
||||
regs->gprs[12], regs->gprs[13],
|
||||
regs->gprs[14], regs->gprs[15]);
|
||||
buffer += sprintf(buffer, "User ACRS: %08x %08x %08x %08x\n",
|
||||
seq_printf(m, "User ACRS: %08x %08x %08x %08x\n",
|
||||
task->thread.acrs[0], task->thread.acrs[1],
|
||||
task->thread.acrs[2], task->thread.acrs[3]);
|
||||
buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
|
||||
seq_printf(m, " %08x %08x %08x %08x\n",
|
||||
task->thread.acrs[4], task->thread.acrs[5],
|
||||
task->thread.acrs[6], task->thread.acrs[7]);
|
||||
buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
|
||||
seq_printf(m, " %08x %08x %08x %08x\n",
|
||||
task->thread.acrs[8], task->thread.acrs[9],
|
||||
task->thread.acrs[10], task->thread.acrs[11]);
|
||||
buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
|
||||
seq_printf(m, " %08x %08x %08x %08x\n",
|
||||
task->thread.acrs[12], task->thread.acrs[13],
|
||||
task->thread.acrs[14], task->thread.acrs[15]);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static DEFINE_SPINLOCK(die_lock);
|
||||
|
Reference in New Issue
Block a user