From: Roland McGrath Date: Sat, 7 Feb 2009 02:15:18 +0000 (-0800) Subject: x86-64: fix int $0x80 -ENOSYS return X-Git-Tag: v2.6.27.20~30 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=045b298368752a4eec3c8d8a754b6fa39a371a22;p=pandora-kernel.git x86-64: fix int $0x80 -ENOSYS return commit c09249f8d1b84344eca882547afdbffee8c09d14 upstream. 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 #include 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 Signed-off-by: Roland McGrath Cc: Chuck Ebbert Signed-off-by: Greg Kroah-Hartman --- Reading git-diff-tree failed