Make sure kernel longjmp always returns 1 rather than what turns out to be
authormiod <miod@openbsd.org>
Tue, 22 Mar 2022 06:51:12 +0000 (06:51 +0000)
committermiod <miod@openbsd.org>
Tue, 22 Mar 2022 06:51:12 +0000 (06:51 +0000)
in a register at call-time.
with & ok jsg@

sys/arch/powerpc64/powerpc64/locore.S
sys/arch/riscv64/riscv64/support.S

index 10a5cd1..4614372 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: locore.S,v 1.43 2021/01/23 12:10:08 kettenis Exp $    */
+/*     $OpenBSD: locore.S,v 1.44 2022/03/22 06:51:12 miod Exp $        */
 
 /*
  * Copyright (c) 2020 Mark Kettenis <kettenis@openbsd.org>
@@ -562,7 +562,7 @@ longjmp:
        ld      %r29, 0x98(%r3)
        ld      %r30, 0xa0(%r3)
        ld      %r31, 0xa8(%r3)
-       mr      %r4, %r3        /* return val */
+       li      %r3, 1          /* return non-zero */
        RETGUARD_CHECK(longjmp, %r11)
        blr
 #endif
index 549c5e3..653a6b7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: support.S,v 1.2 2021/05/12 01:20:52 jsg Exp $ */
+/*     $OpenBSD: support.S,v 1.3 2022/03/22 06:51:12 miod Exp $        */
 
 /*-
  * Copyright (c) 2015-2020 Ruslan Bukin <br@bsdpad.com>
@@ -58,7 +58,7 @@ ENTRY(setjmp)
        sd      s11, (11 * 8)(a0)
        sd      ra, (12 * 8)(a0)
 
-       /* Return value */
+       /* Return zero */
        li      a0, 0
        ret
 END(setjmp)
@@ -83,7 +83,7 @@ ENTRY(longjmp)
        ld      s11, (11 * 8)(a0)
        ld      ra, (12 * 8)(a0)
 
-       /* Load the return value */
-       mv      a0, a1
+       /* Return nonzero */
+       li      a0, 1
        ret
 END(longjmp)