Commit 30af7120 authored by Al Viro's avatar Al Viro Committed by Linus Torvalds

[PATCH] s390: task_stack_page()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent c7584fb6
No related merge requests found
...@@ -153,7 +153,7 @@ void show_regs(struct pt_regs *regs) ...@@ -153,7 +153,7 @@ void show_regs(struct pt_regs *regs)
{ {
struct task_struct *tsk = current; struct task_struct *tsk = current;
printk("CPU: %d %s\n", tsk->thread_info->cpu, print_tainted()); printk("CPU: %d %s\n", task_thread_info(tsk)->cpu, print_tainted());
printk("Process %s (pid: %d, task: %p, ksp: %p)\n", printk("Process %s (pid: %d, task: %p, ksp: %p)\n",
current->comm, current->pid, (void *) tsk, current->comm, current->pid, (void *) tsk,
(void *) tsk->thread.ksp); (void *) tsk->thread.ksp);
...@@ -357,11 +357,10 @@ unsigned long get_wchan(struct task_struct *p) ...@@ -357,11 +357,10 @@ unsigned long get_wchan(struct task_struct *p)
unsigned long return_address; unsigned long return_address;
int count; int count;
if (!p || p == current || p->state == TASK_RUNNING || !p->thread_info) if (!p || p == current || p->state == TASK_RUNNING || !task_stack_page(p))
return 0; return 0;
low = (struct stack_frame *) p->thread_info; low = task_stack_page(p);
high = (struct stack_frame *) high = (struct stack_frame *) task_pt_regs(p);
((unsigned long) p->thread_info + THREAD_SIZE) - 1;
sf = (struct stack_frame *) (p->thread.ksp & PSW_ADDR_INSN); sf = (struct stack_frame *) (p->thread.ksp & PSW_ADDR_INSN);
if (sf <= low || sf > high) if (sf <= low || sf > high)
return 0; return 0;
......
...@@ -657,7 +657,7 @@ __cpu_up(unsigned int cpu) ...@@ -657,7 +657,7 @@ __cpu_up(unsigned int cpu)
idle = current_set[cpu]; idle = current_set[cpu];
cpu_lowcore = lowcore_ptr[cpu]; cpu_lowcore = lowcore_ptr[cpu];
cpu_lowcore->kernel_stack = (unsigned long) cpu_lowcore->kernel_stack = (unsigned long)
idle->thread_info + (THREAD_SIZE); task_stack_page(idle) + (THREAD_SIZE);
sf = (struct stack_frame *) (cpu_lowcore->kernel_stack sf = (struct stack_frame *) (cpu_lowcore->kernel_stack
- sizeof(struct pt_regs) - sizeof(struct pt_regs)
- sizeof(struct stack_frame)); - sizeof(struct stack_frame));
......
...@@ -136,8 +136,8 @@ void show_trace(struct task_struct *task, unsigned long * stack) ...@@ -136,8 +136,8 @@ void show_trace(struct task_struct *task, unsigned long * stack)
sp = __show_trace(sp, S390_lowcore.async_stack - ASYNC_SIZE, sp = __show_trace(sp, S390_lowcore.async_stack - ASYNC_SIZE,
S390_lowcore.async_stack); S390_lowcore.async_stack);
if (task) if (task)
__show_trace(sp, (unsigned long) task->thread_info, __show_trace(sp, (unsigned long) task_stack_page(task),
(unsigned long) task->thread_info + THREAD_SIZE); (unsigned long) task_stack_page(task) + THREAD_SIZE);
else else
__show_trace(sp, S390_lowcore.thread_info, __show_trace(sp, S390_lowcore.thread_info,
S390_lowcore.thread_info + THREAD_SIZE); S390_lowcore.thread_info + THREAD_SIZE);
......
...@@ -192,7 +192,7 @@ extern void show_trace(struct task_struct *task, unsigned long *sp); ...@@ -192,7 +192,7 @@ extern void show_trace(struct task_struct *task, unsigned long *sp);
unsigned long get_wchan(struct task_struct *p); unsigned long get_wchan(struct task_struct *p);
#define task_pt_regs(tsk) ((struct pt_regs *) \ #define task_pt_regs(tsk) ((struct pt_regs *) \
((void *)(tsk)->thread_info + THREAD_SIZE) - 1) (task_stack_page(tsk) + THREAD_SIZE) - 1)
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->psw.addr) #define KSTK_EIP(tsk) (task_pt_regs(tsk)->psw.addr)
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->gprs[15]) #define KSTK_ESP(tsk) (task_pt_regs(tsk)->gprs[15])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment