diff options
Diffstat (limited to 'arch/x86/kernel/process_64.c')
-rw-r--r-- | arch/x86/kernel/process_64.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 416fb9282f4f..e00c31a4b3c0 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -57,6 +57,9 @@ | |||
57 | 57 | ||
58 | asmlinkage extern void ret_from_fork(void); | 58 | asmlinkage extern void ret_from_fork(void); |
59 | 59 | ||
60 | DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task; | ||
61 | EXPORT_PER_CPU_SYMBOL(current_task); | ||
62 | |||
60 | unsigned long kernel_thread_flags = CLONE_VM | CLONE_UNTRACED; | 63 | unsigned long kernel_thread_flags = CLONE_VM | CLONE_UNTRACED; |
61 | 64 | ||
62 | static ATOMIC_NOTIFIER_HEAD(idle_notifier); | 65 | static ATOMIC_NOTIFIER_HEAD(idle_notifier); |
@@ -615,7 +618,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | |||
615 | */ | 618 | */ |
616 | prev->usersp = read_pda(oldrsp); | 619 | prev->usersp = read_pda(oldrsp); |
617 | write_pda(oldrsp, next->usersp); | 620 | write_pda(oldrsp, next->usersp); |
618 | write_pda(pcurrent, next_p); | 621 | percpu_write(current_task, next_p); |
619 | 622 | ||
620 | write_pda(kernelstack, | 623 | write_pda(kernelstack, |
621 | (unsigned long)task_stack_page(next_p) + | 624 | (unsigned long)task_stack_page(next_p) + |