diff options
author | Richard Weinberger <richard@nod.at> | 2013-09-23 17:38:03 +0200 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2013-11-17 11:27:35 +0100 |
commit | a1850e9c7282db1c19a18093a945d5e84bfe7418 (patch) | |
tree | 8d9d3eafc0f045e2ff6c4da8108fb731ecfcda94 /arch/um | |
parent | um: Make stack trace reliable against kernel mode faults (diff) | |
download | linux-a1850e9c7282db1c19a18093a945d5e84bfe7418.tar.xz linux-a1850e9c7282db1c19a18093a945d5e84bfe7418.zip |
um: Get rid of thread_struct->saved_task
As we have a sane show_stack() now, we can drop
the ->saved_task hack.
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um')
-rw-r--r-- | arch/um/drivers/mconsole_kern.c | 6 | ||||
-rw-r--r-- | arch/um/include/asm/processor-generic.h | 1 | ||||
-rw-r--r-- | arch/um/kernel/process.c | 15 |
3 files changed, 4 insertions, 18 deletions
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c index 3df3bd544492..29880c9b324e 100644 --- a/arch/um/drivers/mconsole_kern.c +++ b/arch/um/drivers/mconsole_kern.c @@ -645,11 +645,9 @@ void mconsole_sysrq(struct mc_request *req) static void stack_proc(void *arg) { - struct task_struct *from = current, *to = arg; + struct task_struct *task = arg; - to->thread.saved_task = from; - rcu_user_hooks_switch(from, to); - switch_to(from, to, from); + show_stack(task, NULL); } /* diff --git a/arch/um/include/asm/processor-generic.h b/arch/um/include/asm/processor-generic.h index 90469031297b..d89b02bb6262 100644 --- a/arch/um/include/asm/processor-generic.h +++ b/arch/um/include/asm/processor-generic.h @@ -19,7 +19,6 @@ struct task_struct; struct mm_struct; struct thread_struct { - struct task_struct *saved_task; struct pt_regs regs; struct pt_regs *segv_regs; int singlestep_syscall; diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index bbcef522bcb1..eecc4142764c 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c @@ -82,19 +82,8 @@ void *__switch_to(struct task_struct *from, struct task_struct *to) to->thread.prev_sched = from; set_current(to); - do { - current->thread.saved_task = NULL; - - switch_threads(&from->thread.switch_buf, - &to->thread.switch_buf); - - arch_switch_to(current); - - if (current->thread.saved_task) - show_regs(&(current->thread.regs)); - to = current->thread.saved_task; - from = current; - } while (current->thread.saved_task); + switch_threads(&from->thread.switch_buf, &to->thread.switch_buf); + arch_switch_to(current); return current->thread.prev_sched; } |