aboutsummaryrefslogtreecommitdiff
path: root/virt
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2009-02-06 18:15:18 -0800
committerRoland McGrath <roland@redhat.com>2009-02-06 18:22:29 -0800
commitc09249f8d1b84344eca882547afdbffee8c09d14 (patch)
tree9c652c6aaec01f25f15d451b0f0e8009a8a8d530 /virt
parent6cec50838ed04a9833fb5549f698d3756bbe7e72 (diff)
x86-64: fix int $0x80 -ENOSYS return
One of my past fixes to this code introduced a different new bug. When using 32-bit "int $0x80" entry for a bogus syscall number, the return value is not correctly set to -ENOSYS. This only happens when neither syscall-audit nor syscall tracing is enabled (i.e., never seen if auditd ever started). Test program: /* gcc -o int80-badsys -m32 -g int80-badsys.c Run on x86-64 kernel. Note to reproduce the bug you need auditd never to have started. */ #include <errno.h> #include <stdio.h> int main (void) { long res; asm ("int $0x80" : "=a" (res) : "0" (99999)); printf ("bad syscall returns %ld\n", res); return res != -ENOSYS; } The fix makes the int $0x80 path match the sysenter and syscall paths. Reported-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Roland McGrath <roland@redhat.com>
Diffstat (limited to 'virt')
0 files changed, 0 insertions, 0 deletions