| From d896fa20a70c9e596438728561e058a74ed3196b Mon Sep 17 00:00:00 2001 |
| From: Linus Torvalds <torvalds@linux-foundation.org> |
| Date: Tue, 13 Sep 2016 14:29:23 -0700 |
| Subject: [PATCH] um/Stop conflating task_struct::stack with thread_info |
| |
| commit d896fa20a70c9e596438728561e058a74ed3196b upstream. |
| |
| thread_info may move in the future, so use the accessors. |
| |
| [ Andy Lutomirski wrote this changelog message and changed |
| "task_thread_info(child)->cpu" to "task_cpu(child)". ] |
| |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Andy Lutomirski <luto@kernel.org> |
| Cc: Borislav Petkov <bp@alien8.de> |
| Cc: Brian Gerst <brgerst@gmail.com> |
| Cc: Denys Vlasenko <dvlasenk@redhat.com> |
| Cc: H. Peter Anvin <hpa@zytor.com> |
| Cc: Jann Horn <jann@thejh.net> |
| Cc: Josh Poimboeuf <jpoimboe@redhat.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Link: http://lkml.kernel.org/r/3439705d9838940cc82733a7335fa8c654c37db8.1473801993.git.luto@kernel.org |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| |
| diff --git a/arch/x86/um/ptrace_32.c b/arch/x86/um/ptrace_32.c |
| index a7ef7b131e25..5766ead6fdb9 100644 |
| --- a/arch/x86/um/ptrace_32.c |
| +++ b/arch/x86/um/ptrace_32.c |
| @@ -194,7 +194,7 @@ int peek_user(struct task_struct *child, long addr, long data) |
| |
| static int get_fpregs(struct user_i387_struct __user *buf, struct task_struct *child) |
| { |
| - int err, n, cpu = ((struct thread_info *) child->stack)->cpu; |
| + int err, n, cpu = task_cpu(child); |
| struct user_i387_struct fpregs; |
| |
| err = save_i387_registers(userspace_pid[cpu], |
| @@ -211,7 +211,7 @@ static int get_fpregs(struct user_i387_struct __user *buf, struct task_struct *c |
| |
| static int set_fpregs(struct user_i387_struct __user *buf, struct task_struct *child) |
| { |
| - int n, cpu = ((struct thread_info *) child->stack)->cpu; |
| + int n, cpu = task_cpu(child); |
| struct user_i387_struct fpregs; |
| |
| n = copy_from_user(&fpregs, buf, sizeof(fpregs)); |
| @@ -224,7 +224,7 @@ static int set_fpregs(struct user_i387_struct __user *buf, struct task_struct *c |
| |
| static int get_fpxregs(struct user_fxsr_struct __user *buf, struct task_struct *child) |
| { |
| - int err, n, cpu = ((struct thread_info *) child->stack)->cpu; |
| + int err, n, cpu = task_cpu(child); |
| struct user_fxsr_struct fpregs; |
| |
| err = save_fpx_registers(userspace_pid[cpu], (unsigned long *) &fpregs); |
| @@ -240,7 +240,7 @@ static int get_fpxregs(struct user_fxsr_struct __user *buf, struct task_struct * |
| |
| static int set_fpxregs(struct user_fxsr_struct __user *buf, struct task_struct *child) |
| { |
| - int n, cpu = ((struct thread_info *) child->stack)->cpu; |
| + int n, cpu = task_cpu(child); |
| struct user_fxsr_struct fpregs; |
| |
| n = copy_from_user(&fpregs, buf, sizeof(fpregs)); |
| -- |
| 2.15.0 |
| |