svn commit: r335635 - head/sys/amd64/include

Konstantin Belousov kib at FreeBSD.org
Mon Jun 25 11:29:05 UTC 2018


Author: kib
Date: Mon Jun 25 11:29:04 2018
New Revision: 335635
URL: https://svnweb.freebsd.org/changeset/base/335635

Log:
  Do not leave stray qword on top of stack for interrupts and exceptions
  without error code.  Doing so it mis-aligned the stack.
  
  Since the only consumer of the SSE instructions with the alignment
  requirements is AES-NI module, and since the FPU context cannot be
  accessed in interrupts, the only situation where the alignment matter
  are the compat32 syscalls, as reported in the PR.
  
  PR:	229222
  Reported and tested by:	 dewayne at heuristicsystems.com.au
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/amd64/include/asmacros.h

Modified: head/sys/amd64/include/asmacros.h
==============================================================================
--- head/sys/amd64/include/asmacros.h	Mon Jun 25 11:24:26 2018	(r335634)
+++ head/sys/amd64/include/asmacros.h	Mon Jun 25 11:29:04 2018	(r335635)
@@ -187,7 +187,7 @@
 	movq	PCPU(KCR3),%rax
 	movq	%rax,%cr3
 	movq	PCPU(RSP0),%rax
-	subq	$PTI_SIZE,%rax
+	subq	$PTI_SIZE - 8 * (1 - \has_err),%rax
 	MOVE_STACKS	((PTI_SIZE / 8) - 1 + \has_err)
 	movq	%rax,%rsp
 	popq	%rdx


More information about the svn-src-all mailing list