1. 07 Feb, 2009 1 commit
    • Roland McGrath's avatar
      x86-64: fix int $0x80 -ENOSYS return · c09249f8
      Roland McGrath authored
      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: default avatarDmitry V. Levin <ldv@altlinux.org>
      Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
      c09249f8
  2. 06 Feb, 2009 20 commits
  3. 05 Feb, 2009 19 commits