diff options
Diffstat (limited to 'arch/arm/kernel/ptrace.c')
| -rw-r--r-- | arch/arm/kernel/ptrace.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index e1d5e1929fb..e33870ff0ac 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c @@ -699,10 +699,13 @@ static int vfp_set(struct task_struct *target,  {  	int ret;  	struct thread_info *thread = task_thread_info(target); -	struct vfp_hard_struct new_vfp = thread->vfpstate.hard; +	struct vfp_hard_struct new_vfp;  	const size_t user_fpregs_offset = offsetof(struct user_vfp, fpregs);  	const size_t user_fpscr_offset = offsetof(struct user_vfp, fpscr); +	vfp_sync_hwstate(thread); +	new_vfp = thread->vfpstate.hard; +  	ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,  				  &new_vfp.fpregs,  				  user_fpregs_offset, @@ -723,9 +726,8 @@ static int vfp_set(struct task_struct *target,  	if (ret)  		return ret; -	vfp_sync_hwstate(thread); -	thread->vfpstate.hard = new_vfp;  	vfp_flush_hwstate(thread); +	thread->vfpstate.hard = new_vfp;  	return 0;  }  |