]> git.baikalelectronics.ru Git - kernel.git/commit
audit: ia32entry.S sign extend error codes when calling 64 bit code
authorEric Paris <eparis@redhat.com>
Tue, 3 Jan 2012 19:23:06 +0000 (14:23 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 17 Jan 2012 21:16:56 +0000 (16:16 -0500)
commitdf99e3670b2b34c4b4ea234cf2133bdd2452c322
treeb837ca821ea5138af2f80400afb2175fa68763f2
parentdf8a5648b3ccae3a7aad22b64ddb04bc1b3b976f
audit: ia32entry.S sign extend error codes when calling 64 bit code

In the ia32entry syscall exit audit fastpath we have assembly code which calls
__audit_syscall_exit directly.  This code was, however, zeroes the upper 32
bits of the return code.  It then proceeded to call code which expects longs
to be 64bits long.  In order to handle code which expects longs to be 64bit we
sign extend the return code if that code is an error.  Thus the
__audit_syscall_exit function can correctly handle using the values in
snprintf("%ld").  This fixes the regression introduced in 937d4fe804a3fa53f43.

Old record:
type=SYSCALL msg=audit(1306197182.256:281): arch=40000003 syscall=192 success=no exit=4294967283
New record:
type=SYSCALL msg=audit(1306197182.256:281): arch=40000003 syscall=192 success=no exit=-13

Signed-off-by: Eric Paris <eparis@redhat.com>
Acked-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/ia32/ia32entry.S