aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/traps.c
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2008-02-08 07:18:33 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-08 12:22:24 -0500
commitdf5f8314ca30d6a76735748e5ba4ca9809c0f434 (patch)
treee0a6157b1666a320e69586a81c77a3fe83b36a2a /arch/s390/kernel/traps.c
parenta56d3fc74c0178c5f41c48315604d62cff4e746d (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.c24
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 */
221char *task_show_regs(struct task_struct *task, char *buffer) 222void 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
258static DEFINE_SPINLOCK(die_lock); 258static DEFINE_SPINLOCK(die_lock);