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

Commit 0ee6c15e authored by Kumar Gala's avatar Kumar Gala
Browse files

[POWERPC] Flush registers to proper task context



When we flush register state for FP, Altivec, or SPE in flush_*_to_thread
we need to respect the task_struct that the caller has passed to us.

Most cases we are called with current, however sometimes (ptrace) we may
be passed a different task_struct.

This showed up when using gdbserver debugging a simple program that used
floating point. When gdb tried to show the FP regs they all showed up as
0, because the child's FP registers were never properly flushed to memory.

Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent b07d68b5
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ void flush_fp_to_thread(struct task_struct *tsk)
			 */
			BUG_ON(tsk != current);
#endif
			giveup_fpu(current);
			giveup_fpu(tsk);
		}
		preempt_enable();
	}
@@ -143,7 +143,7 @@ void flush_altivec_to_thread(struct task_struct *tsk)
#ifdef CONFIG_SMP
			BUG_ON(tsk != current);
#endif
			giveup_altivec(current);
			giveup_altivec(tsk);
		}
		preempt_enable();
	}
@@ -182,7 +182,7 @@ void flush_spe_to_thread(struct task_struct *tsk)
#ifdef CONFIG_SMP
			BUG_ON(tsk != current);
#endif
			giveup_spe(current);
			giveup_spe(tsk);
		}
		preempt_enable();
	}