Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ void show_regs(struct pt_regs *regs)
{
	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",
	       current->comm, current->pid, (void *) tsk,
	       (void *) tsk->thread.ksp);
@@ -357,11 +357,10 @@ unsigned long get_wchan(struct task_struct *p)
	unsigned long return_address;
	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;
	low = (struct stack_frame *) p->thread_info;
	high = (struct stack_frame *)
		((unsigned long) p->thread_info + THREAD_SIZE) - 1;
	low = task_stack_page(p);
	high = (struct stack_frame *) task_pt_regs(p);
	sf = (struct stack_frame *) (p->thread.ksp & PSW_ADDR_INSN);
	if (sf <= low || sf > high)
		return 0;
+1 −1
Original line number Diff line number Diff line
@@ -657,7 +657,7 @@ __cpu_up(unsigned int cpu)
	idle = current_set[cpu];
        cpu_lowcore = lowcore_ptr[cpu];
	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
				     - sizeof(struct pt_regs)
				     - sizeof(struct stack_frame));
+2 −2
Original line number Diff line number Diff line
@@ -136,8 +136,8 @@ void show_trace(struct task_struct *task, unsigned long * stack)
	sp = __show_trace(sp, S390_lowcore.async_stack - ASYNC_SIZE,
			  S390_lowcore.async_stack);
	if (task)
		__show_trace(sp, (unsigned long) task->thread_info,
			     (unsigned long) task->thread_info + THREAD_SIZE);
		__show_trace(sp, (unsigned long) task_stack_page(task),
			     (unsigned long) task_stack_page(task) + THREAD_SIZE);
	else
		__show_trace(sp, S390_lowcore.thread_info,
			     S390_lowcore.thread_info + THREAD_SIZE);
+1 −1
Original line number Diff line number Diff line
@@ -192,7 +192,7 @@ extern void show_trace(struct task_struct *task, unsigned long *sp);

unsigned long get_wchan(struct task_struct *p);
#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_ESP(tsk)	(task_pt_regs(tsk)->gprs[15])