[Midnightbsd-cvs] src [7965] trunk/sys/amd64/amd64/ptrace_machdep.c: force clean FPU state in PCB user FPU save area

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Wed Sep 14 19:35:14 EDT 2016


Revision: 7965
          http://svnweb.midnightbsd.org/src/?rev=7965
Author:   laffer1
Date:     2016-09-14 19:35:14 -0400 (Wed, 14 Sep 2016)
Log Message:
-----------
force clean FPU state in PCB user FPU save area

Modified Paths:
--------------
    trunk/sys/amd64/amd64/ptrace_machdep.c

Modified: trunk/sys/amd64/amd64/ptrace_machdep.c
===================================================================
--- trunk/sys/amd64/amd64/ptrace_machdep.c	2016-09-14 23:32:45 UTC (rev 7964)
+++ trunk/sys/amd64/amd64/ptrace_machdep.c	2016-09-14 23:35:14 UTC (rev 7965)
@@ -50,6 +50,7 @@
 
 	switch (req) {
 	case PT_GETXSTATE:
+		fpugetregs(td);
 		savefpu = (char *)(get_pcb_user_save_td(td) + 1);
 		error = copyout(savefpu, addr,
 		    cpu_max_ext_state_size - sizeof(struct savefpu));
@@ -62,8 +63,10 @@
 		}
 		savefpu = malloc(data, M_TEMP, M_WAITOK);
 		error = copyin(addr, savefpu, data);
-		if (error == 0)
+		if (error == 0) {
+			fpugetregs(td);
 			error = fpusetxstate(td, savefpu, data);
+		}
 		free(savefpu, M_TEMP);
 		break;
 
@@ -89,11 +92,13 @@
 
 	switch (req) {
 	case PT_I386_GETXMMREGS:
+		fpugetregs(td);
 		error = copyout(get_pcb_user_save_td(td), addr,
 		    sizeof(*fpstate));
 		break;
 
 	case PT_I386_SETXMMREGS:
+		fpugetregs(td);
 		fpstate = get_pcb_user_save_td(td);
 		error = copyin(addr, fpstate, sizeof(*fpstate));
 		fpstate->sv_env.en_mxcsr &= cpu_mxcsr_mask;



More information about the Midnightbsd-cvs mailing list