diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-10-05 23:19:06 (GMT) |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-10-05 23:19:06 (GMT) |
commit | b4874a3d298606c20118d1ead73235439bbc2823 (patch) | |
tree | 0b6122df3a52650c7861c8e505c01fc381bc43e8 /arch/um/kernel/process.c | |
parent | ceaa1a13c0e53242555fa45887d82339a3f93c78 (diff) | |
parent | 8ef102c6b4bc996ff96ca52b34775fe931ec90c9 (diff) | |
download | linux-fsl-qoriq-b4874a3d298606c20118d1ead73235439bbc2823.tar.xz |
Merge branch 'fixes' into for-linus
Diffstat (limited to 'arch/um/kernel/process.c')
-rw-r--r-- | arch/um/kernel/process.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 57fc702..c5f5afa 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c @@ -181,11 +181,12 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, struct pt_regs *regs) { void (*handler)(void); + int kthread = current->flags & PF_KTHREAD; int ret = 0; p->thread = (struct thread_struct) INIT_THREAD; - if (current->thread.forking) { + if (!kthread) { memcpy(&p->thread.regs.regs, ®s->regs, sizeof(p->thread.regs.regs)); PT_REGS_SET_SYSCALL_RETURN(&p->thread.regs, 0); @@ -195,8 +196,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, handler = fork_handler; arch_copy_thread(¤t->thread.arch, &p->thread.arch); - } - else { + } else { get_safe_registers(p->thread.regs.regs.gp, p->thread.regs.regs.fp); p->thread.request.u.thread = current->thread.request.u.thread; handler = new_thread_handler; @@ -204,7 +204,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, new_thread(task_stack_page(p), &p->thread.switch_buf, handler); - if (current->thread.forking) { + if (!kthread) { clear_flushed_tls(p); /* |