diff options
-rw-r--r-- | arch/x86/ia32/ia32entry.S | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 64ced0b8f8fd..025f0f01d254 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -210,7 +210,9 @@ sysexit_from_sys_call: | |||
210 | sti | 210 | sti |
211 | movl %eax,%esi /* second arg, syscall return value */ | 211 | movl %eax,%esi /* second arg, syscall return value */ |
212 | cmpl $-MAX_ERRNO,%eax /* is it an error ? */ | 212 | cmpl $-MAX_ERRNO,%eax /* is it an error ? */ |
213 | setbe %al /* 1 if so, 0 if not */ | 213 | jbe 1f |
214 | movslq %eax, %rsi /* if error sign extend to 64 bits */ | ||
215 | 1: setbe %al /* 1 if error, 0 if not */ | ||
214 | movzbl %al,%edi /* zero-extend that into %edi */ | 216 | movzbl %al,%edi /* zero-extend that into %edi */ |
215 | call __audit_syscall_exit | 217 | call __audit_syscall_exit |
216 | movq RAX-ARGOFFSET(%rsp),%rax /* reload syscall return value */ | 218 | movq RAX-ARGOFFSET(%rsp),%rax /* reload syscall return value */ |