Author: kib
Date: Thu Jun 14 12:35:57 2018
New Revision: 335135
URL: https://svnweb.freebsd.org/changeset/base/335135

Log:
  linuxolator/amd64: Don't mangle %r10 on return from syscall for EJUSTRETURN.
  
  This fixes the %r10 content for rt_sigreturn.
  
  Submitted by: Yanko Yankulov <[email protected]>
  MFC after:    1 week

Modified:
  head/sys/amd64/linux/linux_sysvec.c

Modified: head/sys/amd64/linux/linux_sysvec.c
==============================================================================
--- head/sys/amd64/linux/linux_sysvec.c Thu Jun 14 12:14:51 2018        
(r335134)
+++ head/sys/amd64/linux/linux_sysvec.c Thu Jun 14 12:35:57 2018        
(r335135)
@@ -228,7 +228,8 @@ linux_set_syscall_retval(struct thread *td, int error)
         * the syscall.  So, do not clobber %rdx and %r10.
         */
        td->td_retval[1] = frame->tf_rdx;
-       frame->tf_r10 = frame->tf_rcx;
+       if (error != EJUSTRETURN)
+               frame->tf_r10 = frame->tf_rcx;
 
        cpu_set_syscall_retval(td, error);
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to