]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/x86/ia32/ia32entry.S
audit: ia32entry.S sign extend error codes when calling 64 bit code
[karo-tx-linux.git] / arch / x86 / ia32 / ia32entry.S
index 64ced0b8f8fd822edf9d8ebdce56bfd83e6c513c..025f0f01d254cdf9e2edbd152a74162e353a55d2 100644 (file)
@@ -210,7 +210,9 @@ sysexit_from_sys_call:
        sti
        movl %eax,%esi          /* second arg, syscall return value */
        cmpl $-MAX_ERRNO,%eax   /* is it an error ? */
-       setbe %al               /* 1 if so, 0 if not */
+       jbe 1f
+       movslq %eax, %rsi       /* if error sign extend to 64 bits */
+1:     setbe %al               /* 1 if error, 0 if not */
        movzbl %al,%edi         /* zero-extend that into %edi */
        call __audit_syscall_exit
        movq RAX-ARGOFFSET(%rsp),%rax   /* reload syscall return value */