Author: mjg
Date: Wed Aug  2 11:25:38 2017
New Revision: 321922
URL: https://svnweb.freebsd.org/changeset/base/321922

Log:
  amd64: annotate the syscall return address check with __predict_false
  
  before:
     0xffffffff80b03ebb <+2059>:        mov    0x460(%r14),%rax
     0xffffffff80b03ec2 <+2066>:        mov    0x98(%rax),%rax
     0xffffffff80b03ec9 <+2073>:        shr    $0x2f,%rax
     0xffffffff80b03ecd <+2077>:        je     0xffffffff80b03edd 
<amd64_syscall+2093>
     0xffffffff80b03ecf <+2079>:        mov    0x3f8(%r14),%rax
     0xffffffff80b03ed6 <+2086>:        orl    $0x1,0xc8(%rax)
     0xffffffff80b03edd <+2093>:        add    $0xf8,%rsp
  
  after:
     0xffffffff80b03ebb <+2059>:        mov    0x460(%r14),%rax
     0xffffffff80b03ec2 <+2066>:        mov    0x98(%rax),%rax
     0xffffffff80b03ec9 <+2073>:        shr    $0x2f,%rax
     0xffffffff80b03ecd <+2077>:        jne    0xffffffff80b03eef 
<amd64_syscall+2111>
     0xffffffff80b03ecf <+2079>:        add    $0xf8,%rsp
  
  Reviewed by:  kib
  MFC after:    1 week

Modified:
  head/sys/amd64/amd64/trap.c

Modified: head/sys/amd64/amd64/trap.c
==============================================================================
--- head/sys/amd64/amd64/trap.c Wed Aug  2 10:33:47 2017        (r321921)
+++ head/sys/amd64/amd64/trap.c Wed Aug  2 11:25:38 2017        (r321922)
@@ -935,6 +935,6 @@ amd64_syscall(struct thread *td, int traced)
         * not be safe.  Instead, use the full return path which
         * catches the problem safely.
         */
-       if (td->td_frame->tf_rip >= VM_MAXUSER_ADDRESS)
+       if (__predict_false(td->td_frame->tf_rip >= VM_MAXUSER_ADDRESS))
                set_pcb_flags(td->td_pcb, PCB_FULL_IRET);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to