diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2008-02-08 07:18:33 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 12:22:24 -0500 |
commit | df5f8314ca30d6a76735748e5ba4ca9809c0f434 (patch) | |
tree | e0a6157b1666a320e69586a81c77a3fe83b36a2a /arch/s390/kernel/traps.c | |
parent | a56d3fc74c0178c5f41c48315604d62cff4e746d (diff) |
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>
Diffstat (limited to 'arch/s390/kernel/traps.c')
-rw-r--r-- | arch/s390/kernel/traps.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 1a2fdb6991df..a4d29025ddbd 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/smp.h> | 24 | #include <linux/smp.h> |
25 | #include <linux/init.h> | 25 | #include <linux/init.h> |
26 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
27 | #include <linux/seq_file.h> | ||
27 | #include <linux/delay.h> | 28 | #include <linux/delay.h> |
28 | #include <linux/module.h> | 29 | #include <linux/module.h> |
29 | #include <linux/kdebug.h> | 30 | #include <linux/kdebug.h> |
@@ -218,41 +219,40 @@ void show_registers(struct pt_regs *regs) | |||
218 | } | 219 | } |
219 | 220 | ||
220 | /* This is called from fs/proc/array.c */ | 221 | /* This is called from fs/proc/array.c */ |
221 | char *task_show_regs(struct task_struct *task, char *buffer) | 222 | void task_show_regs(struct seq_file *m, struct task_struct *task) |
222 | { | 223 | { |
223 | struct pt_regs *regs; | 224 | struct pt_regs *regs; |
224 | 225 | ||
225 | regs = task_pt_regs(task); | 226 | regs = task_pt_regs(task); |
226 | buffer += sprintf(buffer, "task: %p, ksp: %p\n", | 227 | seq_printf(m, "task: %p, ksp: %p\n", |
227 | task, (void *)task->thread.ksp); | 228 | task, (void *)task->thread.ksp); |
228 | buffer += sprintf(buffer, "User PSW : %p %p\n", | 229 | seq_printf(m, "User PSW : %p %p\n", |
229 | (void *) regs->psw.mask, (void *)regs->psw.addr); | 230 | (void *) regs->psw.mask, (void *)regs->psw.addr); |
230 | 231 | ||
231 | buffer += sprintf(buffer, "User GPRS: " FOURLONG, | 232 | seq_printf(m, "User GPRS: " FOURLONG, |
232 | regs->gprs[0], regs->gprs[1], | 233 | regs->gprs[0], regs->gprs[1], |
233 | regs->gprs[2], regs->gprs[3]); | 234 | regs->gprs[2], regs->gprs[3]); |
234 | buffer += sprintf(buffer, " " FOURLONG, | 235 | seq_printf(m, " " FOURLONG, |
235 | regs->gprs[4], regs->gprs[5], | 236 | regs->gprs[4], regs->gprs[5], |
236 | regs->gprs[6], regs->gprs[7]); | 237 | regs->gprs[6], regs->gprs[7]); |
237 | buffer += sprintf(buffer, " " FOURLONG, | 238 | seq_printf(m, " " FOURLONG, |
238 | regs->gprs[8], regs->gprs[9], | 239 | regs->gprs[8], regs->gprs[9], |
239 | regs->gprs[10], regs->gprs[11]); | 240 | regs->gprs[10], regs->gprs[11]); |
240 | buffer += sprintf(buffer, " " FOURLONG, | 241 | seq_printf(m, " " FOURLONG, |
241 | regs->gprs[12], regs->gprs[13], | 242 | regs->gprs[12], regs->gprs[13], |
242 | regs->gprs[14], regs->gprs[15]); | 243 | regs->gprs[14], regs->gprs[15]); |
243 | buffer += sprintf(buffer, "User ACRS: %08x %08x %08x %08x\n", | 244 | seq_printf(m, "User ACRS: %08x %08x %08x %08x\n", |
244 | task->thread.acrs[0], task->thread.acrs[1], | 245 | task->thread.acrs[0], task->thread.acrs[1], |
245 | task->thread.acrs[2], task->thread.acrs[3]); | 246 | task->thread.acrs[2], task->thread.acrs[3]); |
246 | buffer += sprintf(buffer, " %08x %08x %08x %08x\n", | 247 | seq_printf(m, " %08x %08x %08x %08x\n", |
247 | task->thread.acrs[4], task->thread.acrs[5], | 248 | task->thread.acrs[4], task->thread.acrs[5], |
248 | task->thread.acrs[6], task->thread.acrs[7]); | 249 | task->thread.acrs[6], task->thread.acrs[7]); |
249 | buffer += sprintf(buffer, " %08x %08x %08x %08x\n", | 250 | seq_printf(m, " %08x %08x %08x %08x\n", |
250 | task->thread.acrs[8], task->thread.acrs[9], | 251 | task->thread.acrs[8], task->thread.acrs[9], |
251 | task->thread.acrs[10], task->thread.acrs[11]); | 252 | task->thread.acrs[10], task->thread.acrs[11]); |
252 | buffer += sprintf(buffer, " %08x %08x %08x %08x\n", | 253 | seq_printf(m, " %08x %08x %08x %08x\n", |
253 | task->thread.acrs[12], task->thread.acrs[13], | 254 | task->thread.acrs[12], task->thread.acrs[13], |
254 | task->thread.acrs[14], task->thread.acrs[15]); | 255 | task->thread.acrs[14], task->thread.acrs[15]); |
255 | return buffer; | ||
256 | } | 256 | } |
257 | 257 | ||
258 | static DEFINE_SPINLOCK(die_lock); | 258 | static DEFINE_SPINLOCK(die_lock); |