If longjmp(jmp_buf env, int val) is called with val = 0, the setjmp()
macro must return 1.

Signed-off-by: Heinrich Schuchardt <[email protected]>
---
 arch/x86/cpu/i386/setjmp.S | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/x86/cpu/i386/setjmp.S b/arch/x86/cpu/i386/setjmp.S
index 40b10dc8df..eceeafa7c8 100644
--- a/arch/x86/cpu/i386/setjmp.S
+++ b/arch/x86/cpu/i386/setjmp.S
@@ -49,12 +49,17 @@ longjmp:
        xchgl %eax, %edx
 #else
        movl 4(%esp), %edx      /* jmp_ptr address */
+       movl 8(%esp), %eax      /* Return value */
 #endif
        movl (%edx), %ebx
        movl 4(%edx), %esp
        movl 8(%edx), %ebp
        movl 12(%edx), %esi
        movl 16(%edx), %edi
+       test %eax, %eax
+       jnz nz
+       inc %eax
+nz:
        jmp *20(%edx)
 
        .size longjmp, .-longjmp
-- 
2.37.2

Reply via email to