Apply changes from commitid FWrfGfO9Ojnsh1mq to libkern.
authorguenther <guenther@openbsd.org>
Wed, 7 Dec 2022 18:25:32 +0000 (18:25 +0000)
committerguenther <guenther@openbsd.org>
Wed, 7 Dec 2022 18:25:32 +0000 (18:25 +0000)
From original commit message: To mitigate against spectre attacks,
AMD processors without the IBRS feature need an lfence instruction
after every near ret.  See software techniques for managing speculation
on AMD processors revision 9.17.20 mitigation G-5.

ok deraadt@

15 files changed:
sys/lib/libkern/arch/amd64/bcmp.S
sys/lib/libkern/arch/amd64/bzero.S
sys/lib/libkern/arch/amd64/ffs.S
sys/lib/libkern/arch/amd64/htonl.S
sys/lib/libkern/arch/amd64/htons.S
sys/lib/libkern/arch/amd64/memchr.S
sys/lib/libkern/arch/amd64/memcmp.S
sys/lib/libkern/arch/amd64/memmove.S
sys/lib/libkern/arch/amd64/memset.S
sys/lib/libkern/arch/amd64/scanc.S
sys/lib/libkern/arch/amd64/skpc.S
sys/lib/libkern/arch/amd64/strchr.S
sys/lib/libkern/arch/amd64/strcmp.S
sys/lib/libkern/arch/amd64/strlen.S
sys/lib/libkern/arch/amd64/strrchr.S

index 96754ed..2ef8087 100644 (file)
@@ -19,3 +19,4 @@ ENTRY(bcmp)
 L1:    incl    %eax
 L2:    RETGUARD_CHECK(bcmp, r11)
        ret
+       lfence
index a1c9a94..db05dbf 100644 (file)
@@ -38,3 +38,4 @@ L1:   movq    %rdx,%rcx               /* zero remainder by bytes */
        stosb
        RETGUARD_CHECK(bzero, r11)
        ret
+       lfence
index b6ada6c..10154de 100644 (file)
@@ -17,3 +17,4 @@ ENTRY(ffs)
 L1:    xorl    %eax,%eax               /* clear result */
 L2:    RETGUARD_CHECK(ffs, r11)
        ret
+       lfence
index 6073506..dbe6647 100644 (file)
@@ -49,3 +49,4 @@ _PROF_PROLOGUE
        bswap   %eax
        RETGUARD_CHECK(htonl, r11)
        ret
+       lfence
index 189bcba..c7943cf 100644 (file)
@@ -49,3 +49,4 @@ _PROF_PROLOGUE
        xchgb   %ah,%al
        RETGUARD_CHECK(htons, r11)
        ret
+       lfence
index 1ec1727..6a5943e 100644 (file)
@@ -20,3 +20,4 @@ ENTRY(memchr)
 L1:    xorq    %rax,%rax
 L2:    RETGUARD_CHECK(memchr, r11)
        ret
+       lfence
index b53e2d1..c16879c 100644 (file)
@@ -35,3 +35,4 @@ L6:   xorl    %eax,%eax               /* Perform unsigned comparison  */
        subl    %edx,%eax
 L7:    RETGUARD_CHECK(memcmp, r11)
        ret
+       lfence
index 71d5b00..5a5939f 100644 (file)
@@ -87,3 +87,4 @@ ENTRY(memcpy)
        cld
 3:     RETGUARD_CHECK(memmove, r10)
        ret
+       lfence
index 1ccdfe7..e57a7c8 100644 (file)
@@ -52,3 +52,4 @@ L1:   rep
        movq    %r11,%rax
        RETGUARD_CHECK(memset, r10)
        ret
+       lfence
index 2ae94d9..5823435 100644 (file)
@@ -54,3 +54,4 @@ ENTRY(scanc)
        movl    %ecx,%eax
        RETGUARD_CHECK(scanc, r10)
        ret
+       lfence
index c67f9c3..a8b3dfb 100644 (file)
@@ -48,3 +48,4 @@ ENTRY(skpc)
        movl    %ecx,%eax
        RETGUARD_CHECK(skpc, r10)
        ret
+       lfence
index 54d2178..ad8a7ca 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: strchr.S,v 1.5 2018/07/13 05:56:57 guenther Exp $     */
+/*     $OpenBSD: strchr.S,v 1.6 2022/12/07 18:25:32 guenther Exp $     */
 /*     $NetBSD: strchr.S,v 1.7 2014/03/22 19:16:34 jakllsch Exp $      */
 
 /*-
@@ -102,6 +102,7 @@ ENTRY(strchr)
 12:    RETGUARD_POP(r9)
        RETGUARD_CHECK(strchr, r9)
        ret
+       lfence
 
 /* Source misaligned: read aligned word and make low bytes invalid */
 /* I (dsl) think aligning the text here will slow things down! */
index 3ba13a4..12f10ba 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: strcmp.S,v 1.4 2018/07/03 23:22:48 mortimer Exp $     */
+/*     $OpenBSD: strcmp.S,v 1.5 2022/12/07 18:25:33 guenther Exp $     */
 /*     $NetBSD: strcmp.S,v 1.2 2014/03/22 19:16:34 jakllsch Exp $      */
 
 /*
@@ -71,3 +71,4 @@ ENTRY(strcmp)
        subq    %rdx,%rax
        RETGUARD_CHECK(strcmp, r10)
        ret
+       lfence
index d1a8218..03bceca 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: strlen.S,v 1.8 2022/01/11 09:21:34 jsg Exp $  */
+/*     $OpenBSD: strlen.S,v 1.9 2022/12/07 18:25:33 guenther Exp $     */
 /*     $NetBSD: strlen.S,v 1.6 2014/03/22 19:16:34 jakllsch Exp $      */
 
 /*-
@@ -142,6 +142,7 @@ ENTRY(strlen)
        lea     -8(%rax,%rdx),%rax
        RETGUARD_CHECK(strlen, r10)
        ret
+       lfence
 
 /* Misaligned, read aligned word and make low bytes non-zero */
        _ALIGN_TRAPS
index 945146d..a32af2b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: strrchr.S,v 1.4 2018/07/03 23:22:48 mortimer Exp $    */
+/*     $OpenBSD: strrchr.S,v 1.5 2022/12/07 18:25:33 guenther Exp $    */
 /*     $NetBSD: strrchr.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $     */
 
 /*
@@ -123,3 +123,4 @@ ENTRY(strrchr)
 .Ldone:
        RETGUARD_CHECK(strrchr, r10)
        ret
+       lfence