From 98de069d6a29be5cfe0794c78b109306c2faab57 Mon Sep 17 00:00:00 2001 From: Eric Paris Date: Tue, 3 Jan 2012 14:23:06 -0500 Subject: [PATCH] --- yaml --- r: 286051 b: refs/heads/master c: f031cd25568a390dc2c9c3a4015054183753449a h: refs/heads/master i: 286049: 3d08c590b06cbb64b6484234203038da74f3c783 286047: e5769525ee7b1a0458f65176ce927c83dcf9e4af v: v3 --- [refs] | 2 +- trunk/arch/x86/ia32/ia32entry.S | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 450a6dfba623..098b5f7a9e82 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d7e7528bcd456f5c36ad4a202ccfb43c5aa98bc4 +refs/heads/master: f031cd25568a390dc2c9c3a4015054183753449a diff --git a/trunk/arch/x86/ia32/ia32entry.S b/trunk/arch/x86/ia32/ia32entry.S index 64ced0b8f8fd..025f0f01d254 100644 --- a/trunk/arch/x86/ia32/ia32entry.S +++ b/trunk/arch/x86/ia32/ia32entry.S @@ -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 */