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

Commit 42deec6f authored by Suresh Siddha's avatar Suresh Siddha Committed by Ingo Molnar
Browse files

x86, xsave: update xsave header bits during ptrace fpregs set



FP/SSE bits may be zero in the xsave header(representing the init state).
Update these bits during the ptrace fpregs set operation, to indicate the
non-init state.

Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent c37b5efe
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -214,6 +214,13 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
	 */
	 */
	target->thread.xstate->fxsave.mxcsr &= mxcsr_feature_mask;
	target->thread.xstate->fxsave.mxcsr &= mxcsr_feature_mask;


	/*
	 * update the header bits in the xsave header, indicating the
	 * presence of FP and SSE state.
	 */
	if (cpu_has_xsave)
		target->thread.xstate->xsave.xsave_hdr.xstate_bv |= XSTATE_FPSSE;

	return ret;
	return ret;
}
}


@@ -414,6 +421,12 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset,
	if (!ret)
	if (!ret)
		convert_to_fxsr(target, &env);
		convert_to_fxsr(target, &env);


	/*
	 * update the header bit in the xsave header, indicating the
	 * presence of FP.
	 */
	if (cpu_has_xsave)
		target->thread.xstate->xsave.xsave_hdr.xstate_bv |= XSTATE_FP;
	return ret;
	return ret;
}
}