[kernel] r6543 - in dists/sid/linux-2.6/debian: patches patches/series

Bastian Blank waldi at costa.debian.org
Tue May 9 12:39:14 UTC 2006


Author: waldi
Date: Tue May  9 12:38:57 2006
New Revision: 6543

Added:
   dists/sid/linux-2.6/debian/patches/series/13-extra
   dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc19.patch
      - copied, changed from r6316, /dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc13.patch
Removed:
   dists/sid/linux-2.6/debian/patches/series/11-extra
   dists/sid/linux-2.6/debian/patches/series/3-extra
   dists/sid/linux-2.6/debian/patches/series/5-extra
   dists/sid/linux-2.6/debian/patches/series/9-extra
   dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc13.patch
   dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc14-update.patch
   dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc15-update.patch
   dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc17-update.patch
   dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc18-update.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/1-extra

Log:
Update vserver patch to 2.0.2-rc19.

* debian/changelog: Update.
* debian/patches/series/1-extra, debian/patches/series/3-extra,
  debian/patches/series/5-extra, debian/patches/series/9-extra,
  debian/patches/series/11-extra:
  - Remove old vserver patches.
  - Remove xen patches.
* debian/patches/series/13-extra
  - Enable vserver-vs2.0.2-rc19.patch.
  - Move xen patches.
* debian/patches/vserver-vs2.0.2-rc13.patch,
  debian/patches/vserver-vs2.0.2-rc14-update.patch,
  debian/patches/vserver-vs2.0.2-rc15-update.patch,
  debian/patches/vserver-vs2.0.2-rc17-update.patch,
  debian/patches/vserver-vs2.0.2-rc18-update.patch: Remove.
* debian/patches/vserver-vs2.0.2-rc19.patch: Add.


Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	(original)
+++ dists/sid/linux-2.6/debian/changelog	Tue May  9 12:38:57 2006
@@ -7,6 +7,7 @@
   [ Bastian Blank ]
   * Don't make headers packages depend on images. 
   * Bump abiname to 2.
+  * Update vserver patch to 2.0.2-rc19.
 
  -- Bastian Blank <waldi at debian.org>  Tue,  9 May 2006 11:25:13 +0200
 

Modified: dists/sid/linux-2.6/debian/patches/series/1-extra
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/1-extra	(original)
+++ dists/sid/linux-2.6/debian/patches/series/1-extra	Tue May  9 12:38:57 2006
@@ -1,6 +1,5 @@
 + maclist.patch arm armeb
 + arm-nslu2-maclist.patch arm armeb
 + vserver-version.patch *_vserver *_xen-vserver
-+ vserver-vs2.0.2-rc13.patch *_vserver *_xen-vserver
 + mips-tulip.patch mipsel
 + mips-tulip_dc21143.patch mipsel

Added: dists/sid/linux-2.6/debian/patches/series/13-extra
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/series/13-extra	Tue May  9 12:38:57 2006
@@ -0,0 +1,4 @@
++ vserver-vs2.0.2-rc19.patch *_vserver *_xen-vserver
++ vserver-xen-clash.patch *_xen-vserver
++ xen-tree-3.0-testing-9659.patch *_xen *_xen-vserver
++ xen-tls.patch *_xen *_xen-vserver

Copied: dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc19.patch (from r6316, /dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc13.patch)
==============================================================================
--- /dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc13.patch	(original)
+++ dists/sid/linux-2.6/debian/patches/vserver-vs2.0.2-rc19.patch	Tue May  9 12:38:57 2006
@@ -1,7 +1,6 @@
-diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
-index eedf41b..816a4d5 100644
---- a/arch/alpha/Kconfig
-+++ b/arch/alpha/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/alpha/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/Kconfig
+--- linux-2.6.16.13/arch/alpha/Kconfig	2006-02-18 14:39:40 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/Kconfig	2006-04-26 19:07:50 +0200
 @@ -619,6 +619,8 @@ source "arch/alpha/oprofile/Kconfig"
  
  source "arch/alpha/Kconfig.debug"
@@ -11,10 +10,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S
-index 7af15bf..780cb93 100644
---- a/arch/alpha/kernel/entry.S
-+++ b/arch/alpha/kernel/entry.S
+diff -NurpP --minimal linux-2.6.16.13/arch/alpha/kernel/entry.S linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/kernel/entry.S
+--- linux-2.6.16.13/arch/alpha/kernel/entry.S	2006-04-09 13:49:39 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/kernel/entry.S	2006-04-26 19:07:50 +0200
 @@ -874,24 +874,15 @@ sys_getxgid:
  	.globl	sys_getxpid
  	.ent	sys_getxpid
@@ -47,19 +45,10 @@
  	ret
  .end sys_getxpid
  
-diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c
-index 0cd0605..edb3086 100644
---- a/arch/alpha/kernel/ptrace.c
-+++ b/arch/alpha/kernel/ptrace.c
-@@ -15,6 +15,7 @@
- #include <linux/slab.h>
- #include <linux/security.h>
- #include <linux/signal.h>
-+#include <linux/vs_cvirt.h>
- 
- #include <asm/uaccess.h>
- #include <asm/pgtable.h>
-@@ -283,6 +284,11 @@ do_sys_ptrace(long request, long pid, lo
+diff -NurpP --minimal linux-2.6.16.13/arch/alpha/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/kernel/ptrace.c
+--- linux-2.6.16.13/arch/alpha/kernel/ptrace.c	2006-04-09 13:49:39 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/kernel/ptrace.c	2006-04-28 04:47:02 +0200
+@@ -283,6 +283,11 @@ do_sys_ptrace(long request, long pid, lo
  		goto out_notsk;
  	}
  
@@ -71,10 +60,9 @@
  	if (request == PTRACE_ATTACH) {
  		ret = ptrace_attach(child);
  		goto out;
-diff --git a/arch/alpha/kernel/systbls.S b/arch/alpha/kernel/systbls.S
-index 4342cea..1c5c9e3 100644
---- a/arch/alpha/kernel/systbls.S
-+++ b/arch/alpha/kernel/systbls.S
+diff -NurpP --minimal linux-2.6.16.13/arch/alpha/kernel/systbls.S linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/kernel/systbls.S
+--- linux-2.6.16.13/arch/alpha/kernel/systbls.S	2005-08-29 22:24:49 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/kernel/systbls.S	2006-04-26 19:07:50 +0200
 @@ -447,7 +447,7 @@ sys_call_table:
  	.quad sys_stat64			/* 425 */
  	.quad sys_lstat64
@@ -84,10 +72,9 @@
  	.quad sys_ni_syscall			/* sys_mbind */
  	.quad sys_ni_syscall			/* sys_get_mempolicy */
  	.quad sys_ni_syscall			/* sys_set_mempolicy */
-diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
-index 486d794..038f38e 100644
---- a/arch/alpha/mm/init.c
-+++ b/arch/alpha/mm/init.c
+diff -NurpP --minimal linux-2.6.16.13/arch/alpha/mm/init.c linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/mm/init.c
+--- linux-2.6.16.13/arch/alpha/mm/init.c	2006-02-18 14:39:40 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/alpha/mm/init.c	2006-04-26 19:07:50 +0200
 @@ -21,6 +21,7 @@
  #include <linux/init.h>
  #include <linux/bootmem.h> /* max_low_pfn */
@@ -96,11 +83,10 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
-diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index 9f80fa5..189262b 100644
---- a/arch/arm/Kconfig
-+++ b/arch/arm/Kconfig
-@@ -825,6 +825,8 @@ source "arch/arm/oprofile/Kconfig"
+diff -NurpP --minimal linux-2.6.16.13/arch/arm/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/arm/Kconfig
+--- linux-2.6.16.13/arch/arm/Kconfig	2006-04-09 13:49:39 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/arm/Kconfig	2006-04-26 19:07:50 +0200
+@@ -827,6 +827,8 @@ source "arch/arm/oprofile/Kconfig"
  
  source "arch/arm/Kconfig.debug"
  
@@ -109,10 +95,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
-index 3173924..83c02a7 100644
---- a/arch/arm/kernel/calls.S
-+++ b/arch/arm/kernel/calls.S
+diff -NurpP --minimal linux-2.6.16.13/arch/arm/kernel/calls.S linux-2.6.16.13-vs2.0.2-rc19/arch/arm/kernel/calls.S
+--- linux-2.6.16.13/arch/arm/kernel/calls.S	2006-02-18 14:39:40 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/arm/kernel/calls.S	2006-04-26 19:07:50 +0200
 @@ -322,7 +322,7 @@
  /* 310 */	CALL(sys_request_key)
  		CALL(sys_keyctl)
@@ -122,10 +107,9 @@
  		CALL(sys_ioprio_set)
  /* 315 */	CALL(sys_ioprio_get)
  		CALL(sys_inotify_init)
-diff --git a/arch/arm26/Kconfig b/arch/arm26/Kconfig
-index dee23d8..76d4054 100644
---- a/arch/arm26/Kconfig
-+++ b/arch/arm26/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/arm26/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/arm26/Kconfig
+--- linux-2.6.16.13/arch/arm26/Kconfig	2006-02-18 14:39:41 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/arm26/Kconfig	2006-04-26 19:07:50 +0200
 @@ -230,6 +230,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/arm26/Kconfig.debug"
@@ -135,10 +119,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/arm26/kernel/calls.S b/arch/arm26/kernel/calls.S
-index e3d2768..3e8672a 100644
---- a/arch/arm26/kernel/calls.S
-+++ b/arch/arm26/kernel/calls.S
+diff -NurpP --minimal linux-2.6.16.13/arch/arm26/kernel/calls.S linux-2.6.16.13-vs2.0.2-rc19/arch/arm26/kernel/calls.S
+--- linux-2.6.16.13/arch/arm26/kernel/calls.S	2005-03-02 12:38:19 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/arm26/kernel/calls.S	2006-04-26 19:07:50 +0200
 @@ -257,6 +257,11 @@ __syscall_start:
  		.long	sys_lremovexattr
  		.long	sys_fremovexattr
@@ -151,10 +134,9 @@
  __syscall_end:
  
  		.rept	NR_syscalls - (__syscall_end - __syscall_start) / 4
-diff --git a/arch/arm26/kernel/traps.c b/arch/arm26/kernel/traps.c
-index 5847ea5..4110862 100644
---- a/arch/arm26/kernel/traps.c
-+++ b/arch/arm26/kernel/traps.c
+diff -NurpP --minimal linux-2.6.16.13/arch/arm26/kernel/traps.c linux-2.6.16.13-vs2.0.2-rc19/arch/arm26/kernel/traps.c
+--- linux-2.6.16.13/arch/arm26/kernel/traps.c	2006-01-18 06:07:51 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/arm26/kernel/traps.c	2006-04-26 19:07:50 +0200
 @@ -186,8 +186,9 @@ NORET_TYPE void die(const char *str, str
  	printk("Internal error: %s: %x\n", str, err);
  	printk("CPU: %d\n", smp_processor_id());
@@ -167,10 +149,9 @@
  
  	if (!user_mode(regs) || in_interrupt()) {
  		__dump_stack(tsk, (unsigned long)(regs + 1));
-diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
-index b832619..4afa431 100644
---- a/arch/cris/Kconfig
-+++ b/arch/cris/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/cris/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/cris/Kconfig
+--- linux-2.6.16.13/arch/cris/Kconfig	2006-02-18 14:39:42 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/cris/Kconfig	2006-04-26 19:07:50 +0200
 @@ -173,6 +173,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/cris/Kconfig.debug"
@@ -180,10 +161,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/frv/mm/mmu-context.c b/arch/frv/mm/mmu-context.c
-index f2c6866..6983198 100644
---- a/arch/frv/mm/mmu-context.c
-+++ b/arch/frv/mm/mmu-context.c
+diff -NurpP --minimal linux-2.6.16.13/arch/frv/mm/mmu-context.c linux-2.6.16.13-vs2.0.2-rc19/arch/frv/mm/mmu-context.c
+--- linux-2.6.16.13/arch/frv/mm/mmu-context.c	2005-03-02 12:38:20 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/frv/mm/mmu-context.c	2006-04-26 19:07:50 +0200
 @@ -11,6 +11,7 @@
  
  #include <linux/sched.h>
@@ -192,10 +172,9 @@
  #include <asm/tlbflush.h>
  
  #define NR_CXN	4096
-diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
-index 98308b0..a6038b0 100644
---- a/arch/h8300/Kconfig
-+++ b/arch/h8300/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/h8300/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/h8300/Kconfig
+--- linux-2.6.16.13/arch/h8300/Kconfig	2006-02-18 14:39:42 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/h8300/Kconfig	2006-04-26 19:07:50 +0200
 @@ -191,6 +191,8 @@ source "fs/Kconfig"
  
  source "arch/h8300/Kconfig.debug"
@@ -205,10 +184,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
-index 5b1a7d4..e37c177 100644
---- a/arch/i386/Kconfig
-+++ b/arch/i386/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/i386/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/i386/Kconfig
+--- linux-2.6.16.13/arch/i386/Kconfig	2006-04-09 13:49:41 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/i386/Kconfig	2006-04-26 19:07:50 +0200
 @@ -466,23 +466,43 @@ choice
  	  will also likely make your kernel incompatible with binary-only
  	  kernel modules.
@@ -270,10 +248,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/i386/boot/compressed/misc.c b/arch/i386/boot/compressed/misc.c
-index f19f3a7..6f96229 100644
---- a/arch/i386/boot/compressed/misc.c
-+++ b/arch/i386/boot/compressed/misc.c
+diff -NurpP --minimal linux-2.6.16.13/arch/i386/boot/compressed/misc.c linux-2.6.16.13-vs2.0.2-rc19/arch/i386/boot/compressed/misc.c
+--- linux-2.6.16.13/arch/i386/boot/compressed/misc.c	2006-04-09 13:49:42 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/i386/boot/compressed/misc.c	2006-04-26 19:07:50 +0200
 @@ -309,7 +309,7 @@ static void setup_normal_output_buffer(v
  #else
  	if ((RM_ALT_MEM_K > RM_EXT_MEM_K ? RM_ALT_MEM_K : RM_EXT_MEM_K) < 1024) error("Less than 2MB of memory");
@@ -294,10 +271,9 @@
  		mv->hcount = 0; /* say: we need not to move high_buffer */
  	}
  	else mv->hcount = -1;
-diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
-index ab62a9f..0fc23c0 100644
---- a/arch/i386/kernel/setup.c
-+++ b/arch/i386/kernel/setup.c
+diff -NurpP --minimal linux-2.6.16.13/arch/i386/kernel/setup.c linux-2.6.16.13-vs2.0.2-rc19/arch/i386/kernel/setup.c
+--- linux-2.6.16.13/arch/i386/kernel/setup.c	2006-04-09 13:49:42 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/i386/kernel/setup.c	2006-04-26 19:07:50 +0200
 @@ -1192,8 +1192,8 @@ void __init setup_bootmem_allocator(void
  	 * the (very unlikely) case of us accidentally initializing the
  	 * bootmem allocator with an invalid RAM area.
@@ -309,10 +285,9 @@
  
  	/*
  	 * reserve physical page 0 - it's a special BIOS page on many boxes,
-diff --git a/arch/i386/kernel/sys_i386.c b/arch/i386/kernel/sys_i386.c
-index a4a6197..e68b2ba 100644
---- a/arch/i386/kernel/sys_i386.c
-+++ b/arch/i386/kernel/sys_i386.c
+diff -NurpP --minimal linux-2.6.16.13/arch/i386/kernel/sys_i386.c linux-2.6.16.13-vs2.0.2-rc19/arch/i386/kernel/sys_i386.c
+--- linux-2.6.16.13/arch/i386/kernel/sys_i386.c	2004-08-14 12:56:23 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/i386/kernel/sys_i386.c	2006-04-26 19:07:50 +0200
 @@ -19,6 +19,7 @@
  #include <linux/mman.h>
  #include <linux/file.h>
@@ -360,10 +335,9 @@
  	error |= __put_user(0,name->machine+__OLD_UTS_LEN);
  	
  	up_read(&uts_sem);
-diff --git a/arch/i386/kernel/syscall_table.S b/arch/i386/kernel/syscall_table.S
-index ac687d0..5c2afb2 100644
---- a/arch/i386/kernel/syscall_table.S
-+++ b/arch/i386/kernel/syscall_table.S
+diff -NurpP --minimal linux-2.6.16.13/arch/i386/kernel/syscall_table.S linux-2.6.16.13-vs2.0.2-rc19/arch/i386/kernel/syscall_table.S
+--- linux-2.6.16.13/arch/i386/kernel/syscall_table.S	2006-02-18 14:39:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/i386/kernel/syscall_table.S	2006-04-26 19:07:50 +0200
 @@ -272,7 +272,7 @@ ENTRY(sys_call_table)
  	.long sys_tgkill	/* 270 */
  	.long sys_utimes
@@ -373,10 +347,9 @@
  	.long sys_mbind
  	.long sys_get_mempolicy
  	.long sys_set_mempolicy
-diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
-index b814dbd..610d2f9 100644
---- a/arch/i386/kernel/traps.c
-+++ b/arch/i386/kernel/traps.c
+diff -NurpP --minimal linux-2.6.16.13/arch/i386/kernel/traps.c linux-2.6.16.13-vs2.0.2-rc19/arch/i386/kernel/traps.c
+--- linux-2.6.16.13/arch/i386/kernel/traps.c	2006-02-18 14:39:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/i386/kernel/traps.c	2006-04-26 19:07:50 +0200
 @@ -53,6 +53,7 @@
  #include <asm/kdebug.h>
  
@@ -417,10 +390,9 @@
    	} else
  		printk(KERN_EMERG "Recursive die() failure, output suppressed\n");
  
-diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
-index a85ea9d..0a36092 100644
---- a/arch/ia64/Kconfig
-+++ b/arch/ia64/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/Kconfig
+--- linux-2.6.16.13/arch/ia64/Kconfig	2006-04-09 13:49:42 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/Kconfig	2006-04-26 19:07:50 +0200
 @@ -464,6 +464,8 @@ endmenu
  
  source "arch/ia64/Kconfig.debug"
@@ -430,10 +402,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c
-index 4e7a6a1..96b3e14 100644
---- a/arch/ia64/ia32/binfmt_elf32.c
-+++ b/arch/ia64/ia32/binfmt_elf32.c
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/ia32/binfmt_elf32.c linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/ia32/binfmt_elf32.c
+--- linux-2.6.16.13/arch/ia64/ia32/binfmt_elf32.c	2006-01-03 17:29:09 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/ia32/binfmt_elf32.c	2006-04-26 19:07:50 +0200
 @@ -236,7 +236,8 @@ ia32_setup_arg_pages (struct linux_binpr
  			kmem_cache_free(vm_area_cachep, mpnt);
  			return ret;
@@ -444,10 +415,9 @@
  	}
  
  	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
-diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S
-index 95fe044..f51b6c9 100644
---- a/arch/ia64/ia32/ia32_entry.S
-+++ b/arch/ia64/ia32/ia32_entry.S
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/ia32/ia32_entry.S linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/ia32/ia32_entry.S
+--- linux-2.6.16.13/arch/ia64/ia32/ia32_entry.S	2006-04-09 13:49:42 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/ia32/ia32_entry.S	2006-04-26 19:07:50 +0200
 @@ -483,7 +483,7 @@ ia32_syscall_table:
   	data8 sys_tgkill	/* 270 */
   	data8 compat_sys_utimes
@@ -457,10 +427,9 @@
    	data8 sys_ni_syscall
   	data8 sys_ni_syscall	/* 275 */
    	data8 sys_ni_syscall
-diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
-index 930fdfc..f1f3cc1 100644
---- a/arch/ia64/kernel/entry.S
-+++ b/arch/ia64/kernel/entry.S
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/kernel/entry.S linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/kernel/entry.S
+--- linux-2.6.16.13/arch/ia64/kernel/entry.S	2006-02-18 14:39:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/kernel/entry.S	2006-04-26 19:07:50 +0200
 @@ -1591,7 +1591,7 @@ sys_call_table:
  	data8 sys_mq_notify
  	data8 sys_mq_getsetattr
@@ -470,10 +439,9 @@
  	data8 sys_waitid			// 1270
  	data8 sys_add_key
  	data8 sys_request_key
-diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
-index 9c5194b..1c3017c 100644
---- a/arch/ia64/kernel/perfmon.c
-+++ b/arch/ia64/kernel/perfmon.c
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/kernel/perfmon.c linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/kernel/perfmon.c
+--- linux-2.6.16.13/arch/ia64/kernel/perfmon.c	2006-02-18 14:39:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/kernel/perfmon.c	2006-04-26 19:07:50 +0200
 @@ -41,6 +41,8 @@
  #include <linux/capability.h>
  #include <linux/rcupdate.h>
@@ -492,10 +460,9 @@
  	vm_stat_account(vma->vm_mm, vma->vm_flags, vma->vm_file,
  							vma_pages(vma));
  	up_write(&task->mm->mmap_sem);
-diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
-index eaed14a..7c8db71 100644
---- a/arch/ia64/kernel/ptrace.c
-+++ b/arch/ia64/kernel/ptrace.c
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/kernel/ptrace.c
+--- linux-2.6.16.13/arch/ia64/kernel/ptrace.c	2006-02-18 14:39:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/kernel/ptrace.c	2006-04-26 19:07:50 +0200
 @@ -18,6 +18,7 @@
  #include <linux/security.h>
  #include <linux/audit.h>
@@ -514,10 +481,9 @@
  	ret = -EPERM;
  	if (pid == 1)		/* no messing around with init! */
  		goto out_tsk;
-diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c
-index 463f6bb..0b00de6 100644
---- a/arch/ia64/kernel/signal.c
-+++ b/arch/ia64/kernel/signal.c
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/kernel/signal.c linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/kernel/signal.c
+--- linux-2.6.16.13/arch/ia64/kernel/signal.c	2006-01-18 06:07:53 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/kernel/signal.c	2006-04-26 19:07:50 +0200
 @@ -21,6 +21,7 @@
  #include <linux/binfmts.h>
  #include <linux/unistd.h>
@@ -526,10 +492,9 @@
  
  #include <asm/ia32.h>
  #include <asm/intrinsics.h>
-diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
-index af7eb08..ea0308f 100644
---- a/arch/ia64/mm/fault.c
-+++ b/arch/ia64/mm/fault.c
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/mm/fault.c linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/mm/fault.c
+--- linux-2.6.16.13/arch/ia64/mm/fault.c	2006-01-03 17:29:09 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/mm/fault.c	2006-04-26 19:07:50 +0200
 @@ -10,6 +10,7 @@
  #include <linux/smp_lock.h>
  #include <linux/interrupt.h>
@@ -538,10 +503,9 @@
  
  #include <asm/pgtable.h>
  #include <asm/processor.h>
-diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
-index 8cbf164..9b6ca24 100644
---- a/arch/ia64/sn/kernel/xpc_main.c
-+++ b/arch/ia64/sn/kernel/xpc_main.c
+diff -NurpP --minimal linux-2.6.16.13/arch/ia64/sn/kernel/xpc_main.c linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/sn/kernel/xpc_main.c
+--- linux-2.6.16.13/arch/ia64/sn/kernel/xpc_main.c	2006-02-18 14:39:44 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ia64/sn/kernel/xpc_main.c	2006-04-26 19:07:50 +0200
 @@ -109,6 +109,7 @@ static ctl_table xpc_sys_xpc_hb_dir[] = 
  		0644,
  		NULL,
@@ -566,22 +530,9 @@
  		&sysctl_intvec,
  		NULL,
  		&xpc_disengage_request_min_timelimit,
-diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c
-index 340a3bf..aed14f3 100644
---- a/arch/m32r/kernel/ptrace.c
-+++ b/arch/m32r/kernel/ptrace.c
-@@ -25,6 +25,7 @@
- #include <linux/user.h>
- #include <linux/string.h>
- #include <linux/signal.h>
-+#include <linux/vs_cvirt.h>
- 
- #include <asm/cacheflush.h>
- #include <asm/io.h>
-diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
-index 8849439..c83a593 100644
---- a/arch/m68k/Kconfig
-+++ b/arch/m68k/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/m68k/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/m68k/Kconfig
+--- linux-2.6.16.13/arch/m68k/Kconfig	2006-02-18 14:39:44 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/m68k/Kconfig	2006-04-26 19:07:50 +0200
 @@ -650,6 +650,8 @@ source "fs/Kconfig"
  
  source "arch/m68k/Kconfig.debug"
@@ -591,10 +542,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c
-index 540638c..deddf39 100644
---- a/arch/m68k/kernel/ptrace.c
-+++ b/arch/m68k/kernel/ptrace.c
+diff -NurpP --minimal linux-2.6.16.13/arch/m68k/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/arch/m68k/kernel/ptrace.c
+--- linux-2.6.16.13/arch/m68k/kernel/ptrace.c	2006-01-03 17:29:10 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/m68k/kernel/ptrace.c	2006-04-26 19:07:50 +0200
 @@ -280,6 +280,8 @@ long arch_ptrace(struct task_struct *chi
  		ret = ptrace_request(child, request, addr, data);
  		break;
@@ -604,10 +554,9 @@
  
  	return ret;
  out_eio:
-diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig
-index e50858d..1ae18d8 100644
---- a/arch/m68knommu/Kconfig
-+++ b/arch/m68knommu/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/m68knommu/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/m68knommu/Kconfig
+--- linux-2.6.16.13/arch/m68knommu/Kconfig	2006-02-18 14:39:44 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/m68knommu/Kconfig	2006-04-26 19:07:50 +0200
 @@ -646,6 +646,8 @@ source "fs/Kconfig"
  
  source "arch/m68knommu/Kconfig.debug"
@@ -617,10 +566,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
-index 3a0f89d..8158f36 100644
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/mips/Kconfig
+--- linux-2.6.16.13/arch/mips/Kconfig	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/Kconfig	2006-04-26 19:07:50 +0200
 @@ -1814,6 +1814,8 @@ source "arch/mips/oprofile/Kconfig"
  
  source "arch/mips/Kconfig.debug"
@@ -630,10 +578,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
-index e00e5f6..b98d134 100644
---- a/arch/mips/kernel/linux32.c
-+++ b/arch/mips/kernel/linux32.c
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/kernel/linux32.c linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/linux32.c
+--- linux-2.6.16.13/arch/mips/kernel/linux32.c	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/linux32.c	2006-04-26 19:07:50 +0200
 @@ -37,6 +37,7 @@
  #include <linux/security.h>
  #include <linux/compat.h>
@@ -651,10 +598,9 @@
  		ret = -EFAULT;
  	up_read(&uts_sem);
  
-diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
-index f838b36..0d533ef 100644
---- a/arch/mips/kernel/ptrace.c
-+++ b/arch/mips/kernel/ptrace.c
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/ptrace.c
+--- linux-2.6.16.13/arch/mips/kernel/ptrace.c	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/ptrace.c	2006-04-26 19:07:50 +0200
 @@ -476,6 +476,8 @@ asmlinkage void do_syscall_trace(struct 
  		goto out;
  	if (!test_thread_flag(TIF_SYSCALL_TRACE))
@@ -664,22 +610,9 @@
  
  	/* The 0x80 provides a way for the tracing parent to distinguish
  	   between a syscall stop and SIGTRAP delivery */
-diff --git a/arch/mips/kernel/ptrace32.c b/arch/mips/kernel/ptrace32.c
-index 0d5cf97..b375e8d 100644
---- a/arch/mips/kernel/ptrace32.c
-+++ b/arch/mips/kernel/ptrace32.c
-@@ -24,6 +24,7 @@
- #include <linux/smp_lock.h>
- #include <linux/user.h>
- #include <linux/security.h>
-+#include <linux/vs_cvirt.h>
- 
- #include <asm/cpu.h>
- #include <asm/dsp.h>
-diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
-index 2f2dc54..200b74d 100644
---- a/arch/mips/kernel/scall32-o32.S
-+++ b/arch/mips/kernel/scall32-o32.S
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/kernel/scall32-o32.S linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/scall32-o32.S
+--- linux-2.6.16.13/arch/mips/kernel/scall32-o32.S	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/scall32-o32.S	2006-04-26 19:07:50 +0200
 @@ -607,7 +607,7 @@ einval:	li	v0, -EINVAL
  	sys	sys_mq_timedreceive	5
  	sys	sys_mq_notify		2	/* 4275 */
@@ -689,10 +622,9 @@
  	sys	sys_waitid		5
  	sys	sys_ni_syscall		0	/* available, was setaltroot */
  	sys	sys_add_key		5	/* 4280 */
-diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S
-index 98bf25d..da9bb04 100644
---- a/arch/mips/kernel/scall64-64.S
-+++ b/arch/mips/kernel/scall64-64.S
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/kernel/scall64-64.S linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/scall64-64.S
+--- linux-2.6.16.13/arch/mips/kernel/scall64-64.S	2006-02-18 14:39:45 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/scall64-64.S	2006-04-26 19:07:50 +0200
 @@ -433,7 +433,7 @@ sys_call_table:
  	PTR	sys_mq_timedreceive
  	PTR	sys_mq_notify
@@ -702,10 +634,9 @@
  	PTR	sys_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key
-diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
-index 02c8267..bd8b965 100644
---- a/arch/mips/kernel/scall64-n32.S
-+++ b/arch/mips/kernel/scall64-n32.S
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/kernel/scall64-n32.S linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/scall64-n32.S
+--- linux-2.6.16.13/arch/mips/kernel/scall64-n32.S	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/scall64-n32.S	2006-04-26 19:07:50 +0200
 @@ -359,7 +359,7 @@ EXPORT(sysn32_call_table)
  	PTR	compat_sys_mq_timedreceive
  	PTR	compat_sys_mq_notify
@@ -715,10 +646,9 @@
  	PTR	sysn32_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key
-diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
-index 797e0d8..3bc13a4 100644
---- a/arch/mips/kernel/scall64-o32.S
-+++ b/arch/mips/kernel/scall64-o32.S
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/kernel/scall64-o32.S linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/scall64-o32.S
+--- linux-2.6.16.13/arch/mips/kernel/scall64-o32.S	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/scall64-o32.S	2006-04-26 19:07:50 +0200
 @@ -481,7 +481,7 @@ sys_call_table:
  	PTR	compat_sys_mq_timedreceive
  	PTR	compat_sys_mq_notify		/* 4275 */
@@ -728,10 +658,9 @@
  	PTR	sys32_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key			/* 4280 */
-diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
-index 1da2eeb..3838796 100644
---- a/arch/mips/kernel/syscall.c
-+++ b/arch/mips/kernel/syscall.c
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/kernel/syscall.c linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/syscall.c
+--- linux-2.6.16.13/arch/mips/kernel/syscall.c	2006-02-18 14:39:45 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/syscall.c	2006-04-26 19:07:50 +0200
 @@ -29,6 +29,7 @@
  #include <linux/shm.h>
  #include <linux/compiler.h>
@@ -792,10 +721,9 @@
  		up_write(&uts_sem);
  		return 0;
  	}
-diff --git a/arch/mips/kernel/sysirix.c b/arch/mips/kernel/sysirix.c
-index 0fc3730..338a7a1 100644
---- a/arch/mips/kernel/sysirix.c
-+++ b/arch/mips/kernel/sysirix.c
+diff -NurpP --minimal linux-2.6.16.13/arch/mips/kernel/sysirix.c linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/sysirix.c
+--- linux-2.6.16.13/arch/mips/kernel/sysirix.c	2006-02-18 14:39:45 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/mips/kernel/sysirix.c	2006-04-26 19:07:50 +0200
 @@ -31,6 +31,7 @@
  #include <linux/socket.h>
  #include <linux/security.h>
@@ -804,10 +732,9 @@
  
  #include <asm/ptrace.h>
  #include <asm/page.h>
-diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
-index eca33cf..5284537 100644
---- a/arch/parisc/Kconfig
-+++ b/arch/parisc/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/parisc/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/parisc/Kconfig
+--- linux-2.6.16.13/arch/parisc/Kconfig	2006-02-18 14:39:45 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/parisc/Kconfig	2006-04-26 19:07:50 +0200
 @@ -213,6 +213,8 @@ source "arch/parisc/oprofile/Kconfig"
  
  source "arch/parisc/Kconfig.debug"
@@ -817,10 +744,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
-index 6135690..12d9384 100644
---- a/arch/parisc/kernel/sys_parisc32.c
-+++ b/arch/parisc/kernel/sys_parisc32.c
+diff -NurpP --minimal linux-2.6.16.13/arch/parisc/kernel/sys_parisc32.c linux-2.6.16.13-vs2.0.2-rc19/arch/parisc/kernel/sys_parisc32.c
+--- linux-2.6.16.13/arch/parisc/kernel/sys_parisc32.c	2005-06-22 02:37:56 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/parisc/kernel/sys_parisc32.c	2006-04-26 19:07:50 +0200
 @@ -657,6 +657,7 @@ asmlinkage int sys32_sysinfo(struct sysi
  
  	do {
@@ -829,10 +755,9 @@
  		val.uptime = jiffies / HZ;
  
  		val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
-diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
-index 71011ea..4e2d76e 100644
---- a/arch/parisc/kernel/syscall_table.S
-+++ b/arch/parisc/kernel/syscall_table.S
+diff -NurpP --minimal linux-2.6.16.13/arch/parisc/kernel/syscall_table.S linux-2.6.16.13-vs2.0.2-rc19/arch/parisc/kernel/syscall_table.S
+--- linux-2.6.16.13/arch/parisc/kernel/syscall_table.S	2006-02-18 14:39:46 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/parisc/kernel/syscall_table.S	2006-04-26 19:07:50 +0200
 @@ -368,7 +368,7 @@
  	ENTRY_COMP(mbind)		/* 260 */
  	ENTRY_COMP(get_mempolicy)
@@ -842,10 +767,9 @@
  	ENTRY_SAME(add_key)
  	ENTRY_SAME(request_key)		/* 265 */
  	ENTRY_SAME(keyctl)
-diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
-index a834f9e..502a4bc 100644
---- a/arch/powerpc/Kconfig
-+++ b/arch/powerpc/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/powerpc/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/Kconfig
+--- linux-2.6.16.13/arch/powerpc/Kconfig	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/Kconfig	2006-04-26 19:07:50 +0200
 @@ -974,6 +974,8 @@ endmenu
  
  source "arch/powerpc/Kconfig.debug"
@@ -855,10 +779,9 @@
  source "security/Kconfig"
  
  config KEYS_COMPAT
-diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
-index c225cf1..edec59b 100644
---- a/arch/powerpc/kernel/process.c
-+++ b/arch/powerpc/kernel/process.c
+diff -NurpP --minimal linux-2.6.16.13/arch/powerpc/kernel/process.c linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/kernel/process.c
+--- linux-2.6.16.13/arch/powerpc/kernel/process.c	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/kernel/process.c	2006-04-26 19:07:50 +0200
 @@ -425,8 +425,9 @@ void show_regs(struct pt_regs * regs)
  	trap = TRAP(regs);
  	if (trap == 0x300 || trap == 0x600)
@@ -871,22 +794,9 @@
  
  #ifdef CONFIG_SMP
  	printk(" CPU: %d", smp_processor_id());
-diff --git a/arch/powerpc/kernel/ptrace32.c b/arch/powerpc/kernel/ptrace32.c
-index 826ee3d..94e0076 100644
---- a/arch/powerpc/kernel/ptrace32.c
-+++ b/arch/powerpc/kernel/ptrace32.c
-@@ -28,6 +28,7 @@
- #include <linux/user.h>
- #include <linux/security.h>
- #include <linux/signal.h>
-+#include <linux/vs_cvirt.h>
- 
- #include <asm/uaccess.h>
- #include <asm/page.h>
-diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c
-index ad895c9..7db2919 100644
---- a/arch/powerpc/kernel/syscalls.c
-+++ b/arch/powerpc/kernel/syscalls.c
+diff -NurpP --minimal linux-2.6.16.13/arch/powerpc/kernel/syscalls.c linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/kernel/syscalls.c
+--- linux-2.6.16.13/arch/powerpc/kernel/syscalls.c	2006-02-18 14:39:46 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/kernel/syscalls.c	2006-04-26 19:07:50 +0200
 @@ -36,6 +36,7 @@
  #include <linux/file.h>
  #include <linux/init.h>
@@ -946,10 +856,9 @@
  	error |= override_machine(name->machine);
  	up_read(&uts_sem);
  
-diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.S
-index 1ad55f0..0bf1062 100644
---- a/arch/powerpc/kernel/systbl.S
-+++ b/arch/powerpc/kernel/systbl.S
+diff -NurpP --minimal linux-2.6.16.13/arch/powerpc/kernel/systbl.S linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/kernel/systbl.S
+--- linux-2.6.16.13/arch/powerpc/kernel/systbl.S	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/kernel/systbl.S	2006-04-26 19:07:50 +0200
 @@ -296,7 +296,7 @@ COMPAT_SYS(fstatfs64)
  SYSX(sys_ni_syscall, ppc_fadvise64_64, ppc_fadvise64_64)
  PPC_SYS(rtas)
@@ -959,10 +868,9 @@
  SYSCALL(ni_syscall)
  COMPAT_SYS(mbind)
  COMPAT_SYS(get_mempolicy)
-diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
-index 04f7df3..41ec594 100644
---- a/arch/powerpc/kernel/vdso.c
-+++ b/arch/powerpc/kernel/vdso.c
+diff -NurpP --minimal linux-2.6.16.13/arch/powerpc/kernel/vdso.c linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/kernel/vdso.c
+--- linux-2.6.16.13/arch/powerpc/kernel/vdso.c	2006-04-09 13:49:43 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/powerpc/kernel/vdso.c	2006-04-26 19:07:50 +0200
 @@ -25,6 +25,7 @@
  #include <linux/elf.h>
  #include <linux/security.h>
@@ -980,10 +888,9 @@
  	up_write(&mm->mmap_sem);
  
  	return 0;
-diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
-index 11899f0..a598ec3 100644
---- a/arch/ppc/Kconfig
-+++ b/arch/ppc/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/ppc/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/ppc/Kconfig
+--- linux-2.6.16.13/arch/ppc/Kconfig	2006-02-18 14:39:47 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/ppc/Kconfig	2006-04-26 19:07:50 +0200
 @@ -1394,6 +1394,8 @@ source "arch/powerpc/oprofile/Kconfig"
  
  source "arch/ppc/Kconfig.debug"
@@ -993,10 +900,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
-index b7ca5bf..13dbfd3 100644
---- a/arch/s390/Kconfig
-+++ b/arch/s390/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/s390/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/s390/Kconfig
+--- linux-2.6.16.13/arch/s390/Kconfig	2006-02-18 14:39:47 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/s390/Kconfig	2006-04-26 19:07:50 +0200
 @@ -472,6 +472,8 @@ source "arch/s390/oprofile/Kconfig"
  
  source "arch/s390/Kconfig.debug"
@@ -1006,10 +912,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
-index da6fbae..476e064 100644
---- a/arch/s390/kernel/process.c
-+++ b/arch/s390/kernel/process.c
+diff -NurpP --minimal linux-2.6.16.13/arch/s390/kernel/process.c linux-2.6.16.13-vs2.0.2-rc19/arch/s390/kernel/process.c
+--- linux-2.6.16.13/arch/s390/kernel/process.c	2006-02-18 14:39:48 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/s390/kernel/process.c	2006-04-26 19:07:50 +0200
 @@ -164,9 +164,9 @@ void show_regs(struct pt_regs *regs)
  	struct task_struct *tsk = current;
  
@@ -1023,19 +928,10 @@
  
  	show_registers(regs);
  	/* Show stack backtrace if pt_regs is from kernel mode */
-diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
-index 37dfe33..a10dc7a 100644
---- a/arch/s390/kernel/ptrace.c
-+++ b/arch/s390/kernel/ptrace.c
-@@ -33,6 +33,7 @@
- #include <linux/security.h>
- #include <linux/audit.h>
- #include <linux/signal.h>
-+#include <linux/vs_cvirt.h>
- 
- #include <asm/segment.h>
- #include <asm/page.h>
-@@ -723,7 +724,13 @@ sys_ptrace(long request, long pid, long 
+diff -NurpP --minimal linux-2.6.16.13/arch/s390/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/arch/s390/kernel/ptrace.c
+--- linux-2.6.16.13/arch/s390/kernel/ptrace.c	2006-04-09 13:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/s390/kernel/ptrace.c	2006-04-28 04:47:02 +0200
+@@ -723,7 +723,13 @@ sys_ptrace(long request, long pid, long 
  		goto out;
  	}
  
@@ -1049,10 +945,9 @@
  	put_task_struct(child);
  out:
  	unlock_kernel();
-diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
-index 7c88d85..4280067 100644
---- a/arch/s390/kernel/syscalls.S
-+++ b/arch/s390/kernel/syscalls.S
+diff -NurpP --minimal linux-2.6.16.13/arch/s390/kernel/syscalls.S linux-2.6.16.13-vs2.0.2-rc19/arch/s390/kernel/syscalls.S
+--- linux-2.6.16.13/arch/s390/kernel/syscalls.S	2006-02-18 14:39:48 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/s390/kernel/syscalls.S	2006-04-26 19:07:50 +0200
 @@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,sys_clock_sett
  SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper)	/* 260 */
  SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
@@ -1062,10 +957,9 @@
  SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
  SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
  SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
-diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
-index e9b275d..68b398e 100644
---- a/arch/sh/Kconfig
-+++ b/arch/sh/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/sh/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/sh/Kconfig
+--- linux-2.6.16.13/arch/sh/Kconfig	2006-04-09 13:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sh/Kconfig	2006-04-26 19:07:50 +0200
 @@ -633,6 +633,8 @@ source "arch/sh/oprofile/Kconfig"
  
  source "arch/sh/Kconfig.debug"
@@ -1075,10 +969,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/sh/kernel/kgdb_stub.c b/arch/sh/kernel/kgdb_stub.c
-index 42638b9..6c0370f 100644
---- a/arch/sh/kernel/kgdb_stub.c
-+++ b/arch/sh/kernel/kgdb_stub.c
+diff -NurpP --minimal linux-2.6.16.13/arch/sh/kernel/kgdb_stub.c linux-2.6.16.13-vs2.0.2-rc19/arch/sh/kernel/kgdb_stub.c
+--- linux-2.6.16.13/arch/sh/kernel/kgdb_stub.c	2004-08-14 12:54:51 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sh/kernel/kgdb_stub.c	2006-04-26 19:07:50 +0200
 @@ -412,7 +412,7 @@ static struct task_struct *get_thread(in
  	if (pid == PID_MAX) pid = 0;
  
@@ -1088,10 +981,9 @@
  
  	if (thread)
  		return thread;
-diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
-index f944b58..60aa2b7 100644
---- a/arch/sparc/Kconfig
-+++ b/arch/sparc/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/sparc/Kconfig
+--- linux-2.6.16.13/arch/sparc/Kconfig	2006-02-18 14:39:49 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc/Kconfig	2006-04-26 19:07:50 +0200
 @@ -284,6 +284,8 @@ source "fs/Kconfig"
  
  source "arch/sparc/Kconfig.debug"
@@ -1101,19 +993,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/sparc/kernel/ptrace.c b/arch/sparc/kernel/ptrace.c
-index 1baf13e..d4dc454 100644
---- a/arch/sparc/kernel/ptrace.c
-+++ b/arch/sparc/kernel/ptrace.c
-@@ -19,6 +19,7 @@
- #include <linux/smp_lock.h>
- #include <linux/security.h>
- #include <linux/signal.h>
-+#include <linux/vs_cvirt.h>
- 
- #include <asm/pgtable.h>
- #include <asm/system.h>
-@@ -299,6 +300,10 @@ asmlinkage void do_ptrace(struct pt_regs
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/arch/sparc/kernel/ptrace.c
+--- linux-2.6.16.13/arch/sparc/kernel/ptrace.c	2006-04-09 13:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc/kernel/ptrace.c	2006-04-28 04:47:02 +0200
+@@ -299,6 +299,10 @@ asmlinkage void do_ptrace(struct pt_regs
  		pt_error_return(regs, -ret);
  		goto out;
  	}
@@ -1124,10 +1007,9 @@
  
  	if ((current->personality == PER_SUNOS && request == PTRACE_SUNATTACH)
  	    || (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
-diff --git a/arch/sparc/kernel/sys_sparc.c b/arch/sparc/kernel/sys_sparc.c
-index 0cdfc9d..8fa541c 100644
---- a/arch/sparc/kernel/sys_sparc.c
-+++ b/arch/sparc/kernel/sys_sparc.c
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc/kernel/sys_sparc.c linux-2.6.16.13-vs2.0.2-rc19/arch/sparc/kernel/sys_sparc.c
+--- linux-2.6.16.13/arch/sparc/kernel/sys_sparc.c	2005-06-22 02:37:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc/kernel/sys_sparc.c	2006-04-26 19:07:50 +0200
 @@ -21,6 +21,7 @@
  #include <linux/utsname.h>
  #include <linux/smp.h>
@@ -1152,10 +1034,9 @@
  		goto done;
  	err = 0;
  done:
-diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S
-index 768de64..fab6bfd 100644
---- a/arch/sparc/kernel/systbls.S
-+++ b/arch/sparc/kernel/systbls.S
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc/kernel/systbls.S linux-2.6.16.13-vs2.0.2-rc19/arch/sparc/kernel/systbls.S
+--- linux-2.6.16.13/arch/sparc/kernel/systbls.S	2006-02-18 14:39:49 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc/kernel/systbls.S	2006-04-26 19:07:50 +0200
 @@ -72,7 +72,7 @@ sys_call_table:
  /*250*/	.long sparc_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
  /*255*/	.long sys_nis_syscall, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
@@ -1165,10 +1046,9 @@
  /*270*/	.long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
  /*275*/	.long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
  /*280*/	.long sys_ni_syscall, sys_add_key, sys_request_key, sys_keyctl, sys_openat
-diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
-index 4c0a50a..eb58ca4 100644
---- a/arch/sparc64/Kconfig
-+++ b/arch/sparc64/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc64/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/Kconfig
+--- linux-2.6.16.13/arch/sparc64/Kconfig	2006-04-09 13:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/Kconfig	2006-04-26 19:07:50 +0200
 @@ -394,6 +394,8 @@ endmenu
  
  source "arch/sparc64/Kconfig.debug"
@@ -1178,10 +1058,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/sparc64/kernel/binfmt_aout32.c b/arch/sparc64/kernel/binfmt_aout32.c
-index 202a80c..0a6331c 100644
---- a/arch/sparc64/kernel/binfmt_aout32.c
-+++ b/arch/sparc64/kernel/binfmt_aout32.c
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc64/kernel/binfmt_aout32.c linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/kernel/binfmt_aout32.c
+--- linux-2.6.16.13/arch/sparc64/kernel/binfmt_aout32.c	2006-02-18 14:39:49 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/kernel/binfmt_aout32.c	2006-04-26 19:07:50 +0200
 @@ -27,6 +27,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -1190,19 +1069,10 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
-diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c
-index 3f9746f..5a1eb33 100644
---- a/arch/sparc64/kernel/ptrace.c
-+++ b/arch/sparc64/kernel/ptrace.c
-@@ -22,6 +22,7 @@
- #include <linux/seccomp.h>
- #include <linux/audit.h>
- #include <linux/signal.h>
-+#include <linux/vs_cvirt.h>
- 
- #include <asm/asi.h>
- #include <asm/pgtable.h>
-@@ -209,6 +210,10 @@ asmlinkage void do_ptrace(struct pt_regs
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc64/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/kernel/ptrace.c
+--- linux-2.6.16.13/arch/sparc64/kernel/ptrace.c	2006-02-18 14:39:49 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/kernel/ptrace.c	2006-04-28 04:47:02 +0200
+@@ -209,6 +209,10 @@ asmlinkage void do_ptrace(struct pt_regs
  		pt_error_return(regs, -ret);
  		goto out;
  	}
@@ -1213,10 +1083,9 @@
  
  	if ((current->personality == PER_SUNOS && request == PTRACE_SUNATTACH)
  	    || (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
-diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c
-index 5f8c822..781027a 100644
---- a/arch/sparc64/kernel/sys_sparc.c
-+++ b/arch/sparc64/kernel/sys_sparc.c
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc64/kernel/sys_sparc.c linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/kernel/sys_sparc.c
+--- linux-2.6.16.13/arch/sparc64/kernel/sys_sparc.c	2005-08-29 22:24:56 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/kernel/sys_sparc.c	2006-04-26 19:07:50 +0200
 @@ -25,6 +25,7 @@
  #include <linux/syscalls.h>
  #include <linux/ipc.h>
@@ -1241,10 +1110,9 @@
  		goto done;
  	err = 0;
  done:
-diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S
-index c3adb7a..294e1a2 100644
---- a/arch/sparc64/kernel/systbls.S
-+++ b/arch/sparc64/kernel/systbls.S
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc64/kernel/systbls.S linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/kernel/systbls.S
+--- linux-2.6.16.13/arch/sparc64/kernel/systbls.S	2006-02-18 14:39:49 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/kernel/systbls.S	2006-04-26 19:07:50 +0200
 @@ -73,7 +73,7 @@ sys_call_table32:
  /*250*/	.word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl
  	.word sys_ni_syscall, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
@@ -1263,10 +1131,9 @@
  /*270*/	.word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
  	.word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
  /*280*/	.word sys_nis_syscall, sys_add_key, sys_request_key, sys_keyctl, sys_openat
-diff --git a/arch/sparc64/solaris/fs.c b/arch/sparc64/solaris/fs.c
-index 4885ca6..612477d 100644
---- a/arch/sparc64/solaris/fs.c
-+++ b/arch/sparc64/solaris/fs.c
+diff -NurpP --minimal linux-2.6.16.13/arch/sparc64/solaris/fs.c linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/solaris/fs.c
+--- linux-2.6.16.13/arch/sparc64/solaris/fs.c	2006-04-09 13:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/sparc64/solaris/fs.c	2006-04-26 19:07:50 +0200
 @@ -363,7 +363,7 @@ static int report_statvfs(struct vfsmoun
  		int j = strlen (p);
  		
@@ -1285,10 +1152,9 @@
  		if (mnt->mnt_flags & MNT_NOSUID) i |= 2;
  		if (!sysv_valid_dev(inode->i_sb->s_dev))
  			return -EOVERFLOW;
-diff --git a/arch/um/Kconfig b/arch/um/Kconfig
-index 5982fe2..bdf4519 100644
---- a/arch/um/Kconfig
-+++ b/arch/um/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/um/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/um/Kconfig
+--- linux-2.6.16.13/arch/um/Kconfig	2006-02-18 14:39:49 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/um/Kconfig	2006-04-26 19:07:50 +0200
 @@ -290,6 +290,8 @@ source "drivers/connector/Kconfig"
  
  source "fs/Kconfig"
@@ -1298,10 +1164,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
-index 54388d1..6e85bbf 100644
---- a/arch/um/drivers/mconsole_kern.c
-+++ b/arch/um/drivers/mconsole_kern.c
+diff -NurpP --minimal linux-2.6.16.13/arch/um/drivers/mconsole_kern.c linux-2.6.16.13-vs2.0.2-rc19/arch/um/drivers/mconsole_kern.c
+--- linux-2.6.16.13/arch/um/drivers/mconsole_kern.c	2006-04-09 13:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/um/drivers/mconsole_kern.c	2006-04-26 19:07:50 +0200
 @@ -21,6 +21,7 @@
  #include "linux/proc_fs.h"
  #include "linux/syscalls.h"
@@ -1310,23 +1175,20 @@
  #include "asm/irq.h"
  #include "asm/uaccess.h"
  #include "user_util.h"
-diff --git a/arch/um/kernel/process_kern.c b/arch/um/kernel/process_kern.c
-index 3113cab..ea4a9e3 100644
---- a/arch/um/kernel/process_kern.c
-+++ b/arch/um/kernel/process_kern.c
-@@ -23,6 +23,8 @@
+diff -NurpP --minimal linux-2.6.16.13/arch/um/kernel/process_kern.c linux-2.6.16.13-vs2.0.2-rc19/arch/um/kernel/process_kern.c
+--- linux-2.6.16.13/arch/um/kernel/process_kern.c	2006-02-18 14:39:49 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/um/kernel/process_kern.c	2006-04-28 04:47:02 +0200
+@@ -23,6 +23,7 @@
  #include "linux/proc_fs.h"
  #include "linux/ptrace.h"
  #include "linux/random.h"
-+#include "linux/vs_cvirt.h"
 +
  #include "asm/unistd.h"
  #include "asm/mman.h"
  #include "asm/segment.h"
-diff --git a/arch/um/kernel/syscall_kern.c b/arch/um/kernel/syscall_kern.c
-index 8e1a350..d144baa 100644
---- a/arch/um/kernel/syscall_kern.c
-+++ b/arch/um/kernel/syscall_kern.c
+diff -NurpP --minimal linux-2.6.16.13/arch/um/kernel/syscall_kern.c linux-2.6.16.13-vs2.0.2-rc19/arch/um/kernel/syscall_kern.c
+--- linux-2.6.16.13/arch/um/kernel/syscall_kern.c	2005-08-29 22:24:56 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/um/kernel/syscall_kern.c	2006-04-26 19:07:50 +0200
 @@ -15,6 +15,8 @@
  #include "linux/unistd.h"
  #include "linux/slab.h"
@@ -1379,10 +1241,9 @@
  				__OLD_UTS_LEN);
  	error |= __put_user(0,name->machine+__OLD_UTS_LEN);
  	
-diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig
-index e7fc3e5..10f31fa 100644
---- a/arch/v850/Kconfig
-+++ b/arch/v850/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/v850/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/v850/Kconfig
+--- linux-2.6.16.13/arch/v850/Kconfig	2006-02-18 14:39:50 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/v850/Kconfig	2006-04-26 19:07:50 +0200
 @@ -320,6 +320,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/v850/Kconfig.debug"
@@ -1392,10 +1253,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/v850/kernel/ptrace.c b/arch/v850/kernel/ptrace.c
-index 67e0575..061bd4d 100644
---- a/arch/v850/kernel/ptrace.c
-+++ b/arch/v850/kernel/ptrace.c
+diff -NurpP --minimal linux-2.6.16.13/arch/v850/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/arch/v850/kernel/ptrace.c
+--- linux-2.6.16.13/arch/v850/kernel/ptrace.c	2006-04-09 13:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/v850/kernel/ptrace.c	2006-04-26 19:07:50 +0200
 @@ -137,6 +137,8 @@ long arch_ptrace(struct task_struct *chi
  			break;
  		rval = -EIO;
@@ -1405,10 +1265,9 @@
  
  	/* Read/write the word at location ADDR in the registers.  */
  	case PTRACE_PEEKUSR:
-diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig
-index e18eb79..196fae7 100644
---- a/arch/x86_64/Kconfig
-+++ b/arch/x86_64/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/arch/x86_64/Kconfig linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/Kconfig
+--- linux-2.6.16.13/arch/x86_64/Kconfig	2006-04-09 13:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/Kconfig	2006-04-26 19:07:50 +0200
 @@ -588,6 +588,8 @@ endmenu
  
  source "arch/x86_64/Kconfig.debug"
@@ -1418,10 +1277,9 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff --git a/arch/x86_64/ia32/ia32_aout.c b/arch/x86_64/ia32/ia32_aout.c
-index 3bf58af..7aac2ca 100644
---- a/arch/x86_64/ia32/ia32_aout.c
-+++ b/arch/x86_64/ia32/ia32_aout.c
+diff -NurpP --minimal linux-2.6.16.13/arch/x86_64/ia32/ia32_aout.c linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/ia32_aout.c
+--- linux-2.6.16.13/arch/x86_64/ia32/ia32_aout.c	2006-01-03 17:29:20 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/ia32_aout.c	2006-04-26 19:07:50 +0200
 @@ -25,6 +25,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -1430,10 +1288,9 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
-diff --git a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c
-index 572b3b2..4cccf13 100644
---- a/arch/x86_64/ia32/ia32_binfmt.c
-+++ b/arch/x86_64/ia32/ia32_binfmt.c
+diff -NurpP --minimal linux-2.6.16.13/arch/x86_64/ia32/ia32_binfmt.c linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/ia32_binfmt.c
+--- linux-2.6.16.13/arch/x86_64/ia32/ia32_binfmt.c	2006-02-18 14:39:50 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/ia32_binfmt.c	2006-04-26 19:07:50 +0200
 @@ -371,7 +371,8 @@ int ia32_setup_arg_pages(struct linux_bi
  			kmem_cache_free(vm_area_cachep, mpnt);
  			return ret;
@@ -1444,10 +1301,9 @@
  	} 
  
  	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
-diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S
-index 00dee17..f331a49 100644
---- a/arch/x86_64/ia32/ia32entry.S
-+++ b/arch/x86_64/ia32/ia32entry.S
+diff -NurpP --minimal linux-2.6.16.13/arch/x86_64/ia32/ia32entry.S linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/ia32entry.S
+--- linux-2.6.16.13/arch/x86_64/ia32/ia32entry.S	2006-02-18 14:39:50 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/ia32entry.S	2006-04-26 19:07:50 +0200
 @@ -650,7 +650,7 @@ ia32_sys_call_table:
  	.quad sys_tgkill		/* 270 */
  	.quad compat_sys_utimes
@@ -1457,22 +1313,9 @@
  	.quad sys_mbind
  	.quad compat_sys_get_mempolicy	/* 275 */
  	.quad sys_set_mempolicy
-diff --git a/arch/x86_64/ia32/ptrace32.c b/arch/x86_64/ia32/ptrace32.c
-index 23a4515..8945338 100644
---- a/arch/x86_64/ia32/ptrace32.c
-+++ b/arch/x86_64/ia32/ptrace32.c
-@@ -18,6 +18,7 @@
- #include <linux/unistd.h>
- #include <linux/mm.h>
- #include <linux/ptrace.h>
-+#include <linux/vs_cvirt.h>
- #include <asm/ptrace.h>
- #include <asm/compat.h>
- #include <asm/uaccess.h>
-diff --git a/arch/x86_64/ia32/sys_ia32.c b/arch/x86_64/ia32/sys_ia32.c
-index 2bc55af..f3d4615 100644
---- a/arch/x86_64/ia32/sys_ia32.c
-+++ b/arch/x86_64/ia32/sys_ia32.c
+diff -NurpP --minimal linux-2.6.16.13/arch/x86_64/ia32/sys_ia32.c linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/sys_ia32.c
+--- linux-2.6.16.13/arch/x86_64/ia32/sys_ia32.c	2006-02-18 14:39:50 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/sys_ia32.c	2006-04-26 19:07:50 +0200
 @@ -62,6 +62,7 @@
  #include <linux/highuid.h>
  #include <linux/vmalloc.h>
@@ -1517,10 +1360,9 @@
  	up_read(&uts_sem);
  	if (personality(current->personality) == PER_LINUX32) 
  		err |= copy_to_user(&name->machine, "i686", 5);
-diff --git a/arch/x86_64/ia32/syscall32.c b/arch/x86_64/ia32/syscall32.c
-index 3a01329..cba1692 100644
---- a/arch/x86_64/ia32/syscall32.c
-+++ b/arch/x86_64/ia32/syscall32.c
+diff -NurpP --minimal linux-2.6.16.13/arch/x86_64/ia32/syscall32.c linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/syscall32.c
+--- linux-2.6.16.13/arch/x86_64/ia32/syscall32.c	2005-10-28 20:49:18 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/ia32/syscall32.c	2006-04-26 19:07:50 +0200
 @@ -10,6 +10,7 @@
  #include <linux/init.h>
  #include <linux/stringify.h>
@@ -1538,10 +1380,9 @@
  	up_write(&mm->mmap_sem);
  	return 0;
  }
-diff --git a/arch/x86_64/kernel/sys_x86_64.c b/arch/x86_64/kernel/sys_x86_64.c
-index 6449ea8..142fbf7 100644
---- a/arch/x86_64/kernel/sys_x86_64.c
-+++ b/arch/x86_64/kernel/sys_x86_64.c
+diff -NurpP --minimal linux-2.6.16.13/arch/x86_64/kernel/sys_x86_64.c linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/kernel/sys_x86_64.c
+--- linux-2.6.16.13/arch/x86_64/kernel/sys_x86_64.c	2006-01-03 17:29:20 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/kernel/sys_x86_64.c	2006-04-26 19:07:50 +0200
 @@ -16,6 +16,7 @@
  #include <linux/file.h>
  #include <linux/utsname.h>
@@ -1559,10 +1400,9 @@
  	up_read(&uts_sem);
  	if (personality(current->personality) == PER_LINUX32) 
  		err |= copy_to_user(&name->machine, "i686", 5); 		
-diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c
-index 28d50dc..906be26 100644
---- a/arch/x86_64/kernel/traps.c
-+++ b/arch/x86_64/kernel/traps.c
+diff -NurpP --minimal linux-2.6.16.13/arch/x86_64/kernel/traps.c linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/kernel/traps.c
+--- linux-2.6.16.13/arch/x86_64/kernel/traps.c	2006-02-18 14:39:50 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/arch/x86_64/kernel/traps.c	2006-04-26 19:07:50 +0200
 @@ -321,8 +321,9 @@ void show_registers(struct pt_regs *regs
  
  	printk("CPU %d ", cpu);
@@ -1575,10 +1415,9 @@
  
  	/*
  	 * When in-kernel, we also print out the stack and code at the
-diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
-index 8b13316..3e1f17f 100644
---- a/drivers/block/Kconfig
-+++ b/drivers/block/Kconfig
+diff -NurpP --minimal linux-2.6.16.13/drivers/block/Kconfig linux-2.6.16.13-vs2.0.2-rc19/drivers/block/Kconfig
+--- linux-2.6.16.13/drivers/block/Kconfig	2006-02-18 14:39:52 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/drivers/block/Kconfig	2006-04-26 19:07:50 +0200
 @@ -315,6 +315,13 @@ config BLK_DEV_CRYPTOLOOP
  	  instead, which can be configured to be on-disk compatible with the
  	  cryptoloop device.
@@ -1593,22 +1432,19 @@
  config BLK_DEV_NBD
  	tristate "Network block device support"
  	depends on NET
-diff --git a/drivers/block/Makefile b/drivers/block/Makefile
-index 3ec1f8d..00f2e4e 100644
---- a/drivers/block/Makefile
-+++ b/drivers/block/Makefile
+diff -NurpP --minimal linux-2.6.16.13/drivers/block/Makefile linux-2.6.16.13-vs2.0.2-rc19/drivers/block/Makefile
+--- linux-2.6.16.13/drivers/block/Makefile	2006-01-03 17:29:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/drivers/block/Makefile	2006-04-26 19:07:50 +0200
 @@ -30,4 +30,5 @@ obj-$(CONFIG_BLK_DEV_CRYPTOLOOP) += cryp
  obj-$(CONFIG_VIODASD)		+= viodasd.o
  obj-$(CONFIG_BLK_DEV_SX8)	+= sx8.o
  obj-$(CONFIG_BLK_DEV_UB)	+= ub.o
 +obj-$(CONFIG_BLK_DEV_VROOT)	+= vroot.o
  
-diff --git a/drivers/block/vroot.c b/drivers/block/vroot.c
-new file mode 100644
-index 0000000..ac4441c
---- /dev/null
-+++ b/drivers/block/vroot.c
-@@ -0,0 +1,289 @@
+diff -NurpP --minimal linux-2.6.16.13/drivers/block/vroot.c linux-2.6.16.13-vs2.0.2-rc19/drivers/block/vroot.c
+--- linux-2.6.16.13/drivers/block/vroot.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/drivers/block/vroot.c	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,288 @@
 +/*
 + *  linux/drivers/block/vroot.c
 + *
@@ -1623,7 +1459,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/module.h>
 +#include <linux/moduleparam.h>
 +#include <linux/file.h>
@@ -1898,10 +1733,9 @@
 +
 +#endif
 +
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 86be04b..05c343f 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
+diff -NurpP --minimal linux-2.6.16.13/drivers/char/random.c linux-2.6.16.13-vs2.0.2-rc19/drivers/char/random.c
+--- linux-2.6.16.13/drivers/char/random.c	2006-04-09 13:49:45 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/drivers/char/random.c	2006-04-26 19:07:50 +0200
 @@ -1174,7 +1174,7 @@ static char sysctl_bootid[16];
  static int proc_do_uuid(ctl_table *table, int write, struct file *filp,
  			void __user *buffer, size_t *lenp, loff_t *ppos)
@@ -1911,10 +1745,9 @@
  	unsigned char buf[64], tmp_uuid[16], *uuid;
  
  	uuid = table->data;
-diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
-index 53d3d06..7f47d83 100644
---- a/drivers/char/tty_io.c
-+++ b/drivers/char/tty_io.c
+diff -NurpP --minimal linux-2.6.16.13/drivers/char/tty_io.c linux-2.6.16.13-vs2.0.2-rc19/drivers/char/tty_io.c
+--- linux-2.6.16.13/drivers/char/tty_io.c	2006-05-03 16:58:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/drivers/char/tty_io.c	2006-04-26 19:07:50 +0200
 @@ -103,6 +103,7 @@
  #include <linux/vt_kern.h>
  #include <linux/selection.h>
@@ -1950,10 +1783,9 @@
  	if (pgrp < 0)
  		return -EINVAL;
  	if (session_of_pgrp(pgrp) != current->signal->session)
-diff --git a/drivers/infiniband/core/uverbs_mem.c b/drivers/infiniband/core/uverbs_mem.c
-index 36a32c3..a945edd 100644
---- a/drivers/infiniband/core/uverbs_mem.c
-+++ b/drivers/infiniband/core/uverbs_mem.c
+diff -NurpP --minimal linux-2.6.16.13/drivers/infiniband/core/uverbs_mem.c linux-2.6.16.13-vs2.0.2-rc19/drivers/infiniband/core/uverbs_mem.c
+--- linux-2.6.16.13/drivers/infiniband/core/uverbs_mem.c	2005-10-28 20:49:23 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/drivers/infiniband/core/uverbs_mem.c	2006-04-26 19:07:50 +0200
 @@ -36,6 +36,7 @@
  
  #include <linux/mm.h>
@@ -1991,10 +1823,9 @@
  	up_write(&work->mm->mmap_sem);
  	mmput(work->mm);
  	kfree(work);
-diff --git a/fs/attr.c b/fs/attr.c
-index 97de946..bb1c58c 100644
---- a/fs/attr.c
-+++ b/fs/attr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/attr.c linux-2.6.16.13-vs2.0.2-rc19/fs/attr.c
+--- linux-2.6.16.13/fs/attr.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/attr.c	2006-04-26 19:07:50 +0200
 @@ -15,6 +15,9 @@
  #include <linux/fcntl.h>
  #include <linux/quotaops.h>
@@ -2053,10 +1884,9 @@
  				error = DQUOT_TRANSFER(inode, attr) ? -EDQUOT : 0;
  			if (!error)
  				error = inode_setattr(inode, attr);
-diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
-index f312103..0cfa5a6 100644
---- a/fs/binfmt_aout.c
-+++ b/fs/binfmt_aout.c
+diff -NurpP --minimal linux-2.6.16.13/fs/binfmt_aout.c linux-2.6.16.13-vs2.0.2-rc19/fs/binfmt_aout.c
+--- linux-2.6.16.13/fs/binfmt_aout.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/binfmt_aout.c	2006-04-26 19:07:50 +0200
 @@ -24,6 +24,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -2065,10 +1895,9 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
-diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
-index c2eac2a..814b570 100644
---- a/fs/binfmt_elf.c
-+++ b/fs/binfmt_elf.c
+diff -NurpP --minimal linux-2.6.16.13/fs/binfmt_elf.c linux-2.6.16.13-vs2.0.2-rc19/fs/binfmt_elf.c
+--- linux-2.6.16.13/fs/binfmt_elf.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/binfmt_elf.c	2006-04-26 19:07:50 +0200
 @@ -38,6 +38,7 @@
  #include <linux/security.h>
  #include <linux/syscalls.h>
@@ -2077,10 +1906,9 @@
  
  #include <asm/uaccess.h>
  #include <asm/param.h>
-diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
-index 108d56b..5b32e27 100644
---- a/fs/binfmt_flat.c
-+++ b/fs/binfmt_flat.c
+diff -NurpP --minimal linux-2.6.16.13/fs/binfmt_flat.c linux-2.6.16.13-vs2.0.2-rc19/fs/binfmt_flat.c
+--- linux-2.6.16.13/fs/binfmt_flat.c	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/binfmt_flat.c	2006-04-26 19:07:50 +0200
 @@ -36,6 +36,7 @@
  #include <linux/personality.h>
  #include <linux/init.h>
@@ -2089,10 +1917,9 @@
  
  #include <asm/byteorder.h>
  #include <asm/system.h>
-diff --git a/fs/binfmt_som.c b/fs/binfmt_som.c
-index 00a91dc..e1cb594 100644
---- a/fs/binfmt_som.c
-+++ b/fs/binfmt_som.c
+diff -NurpP --minimal linux-2.6.16.13/fs/binfmt_som.c linux-2.6.16.13-vs2.0.2-rc19/fs/binfmt_som.c
+--- linux-2.6.16.13/fs/binfmt_som.c	2006-01-03 17:29:55 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/binfmt_som.c	2006-04-26 19:07:50 +0200
 @@ -28,6 +28,7 @@
  #include <linux/shm.h>
  #include <linux/personality.h>
@@ -2101,10 +1928,9 @@
  
  #include <asm/uaccess.h>
  #include <asm/pgtable.h>
-diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
-index bfb8a23..caba0b5 100644
---- a/fs/devpts/inode.c
-+++ b/fs/devpts/inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/devpts/inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/devpts/inode.c
+--- linux-2.6.16.13/fs/devpts/inode.c	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/devpts/inode.c	2006-04-26 19:07:50 +0200
 @@ -19,7 +19,19 @@
  #include <linux/tty.h>
  #include <linux/devpts_fs.h>
@@ -2171,10 +1997,9 @@
  	inode->u.generic_ip = tty;
  
  	dentry = get_node(number);
-diff --git a/fs/exec.c b/fs/exec.c
-index 0b515ac..aa030cb 100644
---- a/fs/exec.c
-+++ b/fs/exec.c
+diff -NurpP --minimal linux-2.6.16.13/fs/exec.c linux-2.6.16.13-vs2.0.2-rc19/fs/exec.c
+--- linux-2.6.16.13/fs/exec.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/exec.c	2006-04-26 19:07:50 +0200
 @@ -49,6 +49,7 @@
  #include <linux/rmap.h>
  #include <linux/acct.h>
@@ -2193,10 +2018,9 @@
  	}
  
  	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
-diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
-index 2c00953..21cee4f 100644
---- a/fs/ext2/balloc.c
-+++ b/fs/ext2/balloc.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/balloc.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/balloc.c
+--- linux-2.6.16.13/fs/ext2/balloc.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/balloc.c	2006-04-26 19:07:50 +0200
 @@ -17,6 +17,7 @@
  #include <linux/sched.h>
  #include <linux/buffer_head.h>
@@ -2242,10 +2066,9 @@
  	release_blocks(sb, es_alloc);
  out_dquot:
  	DQUOT_FREE_BLOCK(inode, dq_alloc);
-diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
-index 00de0a7..3c537fc 100644
---- a/fs/ext2/ext2.h
-+++ b/fs/ext2/ext2.h
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/ext2.h linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/ext2.h
+--- linux-2.6.16.13/fs/ext2/ext2.h	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/ext2.h	2006-04-26 19:07:50 +0200
 @@ -162,6 +162,7 @@ extern struct file_operations ext2_xip_f
  extern struct address_space_operations ext2_aops;
  extern struct address_space_operations ext2_aops_xip;
@@ -2254,20 +2077,18 @@
  
  /* namei.c */
  extern struct inode_operations ext2_dir_inode_operations;
-diff --git a/fs/ext2/file.c b/fs/ext2/file.c
-index a484412..addf2c3 100644
---- a/fs/ext2/file.c
-+++ b/fs/ext2/file.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/file.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/file.c
+--- linux-2.6.16.13/fs/ext2/file.c	2005-08-29 22:25:30 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/file.c	2006-04-26 19:07:50 +0200
 @@ -79,4 +79,5 @@ struct inode_operations ext2_file_inode_
  #endif
  	.setattr	= ext2_setattr,
  	.permission	= ext2_permission,
 +	.sync_flags	= ext2_sync_flags,
  };
-diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
-index e527652..11e7d7a 100644
---- a/fs/ext2/ialloc.c
-+++ b/fs/ext2/ialloc.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/ialloc.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/ialloc.c
+--- linux-2.6.16.13/fs/ext2/ialloc.c	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/ialloc.c	2006-04-26 19:07:50 +0200
 @@ -18,6 +18,8 @@
  #include <linux/backing-dev.h>
  #include <linux/buffer_head.h>
@@ -2323,10 +2144,9 @@
  	make_bad_inode(inode);
  	iput(inode);
  	return ERR_PTR(err);
-diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
-index a717837..5a08051 100644
---- a/fs/ext2/inode.c
-+++ b/fs/ext2/inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/inode.c
+--- linux-2.6.16.13/fs/ext2/inode.c	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/inode.c	2006-04-26 19:07:50 +0200
 @@ -31,6 +31,7 @@
  #include <linux/writeback.h>
  #include <linux/buffer_head.h>
@@ -2467,10 +2287,9 @@
  	error = inode_setattr(inode, iattr);
  	if (!error && (iattr->ia_valid & ATTR_MODE))
  		error = ext2_acl_chmod(inode);
-diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c
-index 3ca9afd..6ef1d95 100644
---- a/fs/ext2/ioctl.c
-+++ b/fs/ext2/ioctl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/ioctl.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/ioctl.c
+--- linux-2.6.16.13/fs/ext2/ioctl.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/ioctl.c	2006-04-26 19:07:50 +0200
 @@ -11,6 +11,7 @@
  #include <linux/capability.h>
  #include <linux/time.h>
@@ -2510,10 +2329,9 @@
  			return -EROFS;
  		if (get_user(inode->i_generation, (int __user *) arg))
  			return -EFAULT;	
-diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
-index ad1432a..30d7141 100644
---- a/fs/ext2/namei.c
-+++ b/fs/ext2/namei.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/namei.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/namei.c
+--- linux-2.6.16.13/fs/ext2/namei.c	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/namei.c	2006-04-26 19:07:50 +0200
 @@ -31,6 +31,7 @@
   */
  
@@ -2544,10 +2362,9 @@
  	.permission	= ext2_permission,
 +	.sync_flags	= ext2_sync_flags,
  };
-diff --git a/fs/ext2/super.c b/fs/ext2/super.c
-index cb6f9bd..66c3b1e 100644
---- a/fs/ext2/super.c
-+++ b/fs/ext2/super.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/super.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/super.c
+--- linux-2.6.16.13/fs/ext2/super.c	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/super.c	2006-04-26 19:07:50 +0200
 @@ -289,7 +289,7 @@ enum {
  	Opt_err_ro, Opt_nouid32, Opt_nocheck, Opt_debug,
  	Opt_oldalloc, Opt_orlov, Opt_nobh, Opt_user_xattr, Opt_nouser_xattr,
@@ -2600,10 +2417,9 @@
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
  
-diff --git a/fs/ext2/symlink.c b/fs/ext2/symlink.c
-index 1e67d87..f86ceeb 100644
---- a/fs/ext2/symlink.c
-+++ b/fs/ext2/symlink.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/symlink.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/symlink.c
+--- linux-2.6.16.13/fs/ext2/symlink.c	2005-08-29 22:25:30 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/symlink.c	2006-04-26 19:07:50 +0200
 @@ -38,6 +38,7 @@ struct inode_operations ext2_symlink_ino
  	.listxattr	= ext2_listxattr,
  	.removexattr	= generic_removexattr,
@@ -2618,10 +2434,9 @@
  #endif
 +	.sync_flags	= ext2_sync_flags,
  };
-diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
-index 86ae8e9..24c816a 100644
---- a/fs/ext2/xattr.c
-+++ b/fs/ext2/xattr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext2/xattr.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/xattr.c
+--- linux-2.6.16.13/fs/ext2/xattr.c	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext2/xattr.c	2006-04-26 19:07:50 +0200
 @@ -60,6 +60,7 @@
  #include <linux/mbcache.h>
  #include <linux/quotaops.h>
@@ -2659,10 +2474,9 @@
  		DQUOT_FREE_BLOCK(inode, 1);
  	}
  	EXT2_I(inode)->i_file_acl = 0;
-diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
-index 6250fcd..656cd16 100644
---- a/fs/ext3/balloc.c
-+++ b/fs/ext3/balloc.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/balloc.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/balloc.c
+--- linux-2.6.16.13/fs/ext3/balloc.c	2006-02-18 14:40:21 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/balloc.c	2006-04-26 19:07:50 +0200
 @@ -20,6 +20,7 @@
  #include <linux/ext3_jbd.h>
  #include <linux/quotaops.h>
@@ -2760,10 +2574,9 @@
  	if (fatal) {
  		*errp = fatal;
  		ext3_std_error(sb, fatal);
-diff --git a/fs/ext3/file.c b/fs/ext3/file.c
-index 98e7834..9aae45c 100644
---- a/fs/ext3/file.c
-+++ b/fs/ext3/file.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/file.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/file.c
+--- linux-2.6.16.13/fs/ext3/file.c	2005-08-29 22:25:30 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/file.c	2006-04-26 19:07:50 +0200
 @@ -131,5 +131,6 @@ struct inode_operations ext3_file_inode_
  	.removexattr	= generic_removexattr,
  #endif
@@ -2771,10 +2584,9 @@
 +	.sync_flags	= ext3_sync_flags,
  };
  
-diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c
-index dc82646..17c75f5 100644
---- a/fs/ext3/ialloc.c
-+++ b/fs/ext3/ialloc.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/ialloc.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/ialloc.c
+--- linux-2.6.16.13/fs/ext3/ialloc.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/ialloc.c	2006-04-26 19:07:50 +0200
 @@ -23,6 +23,8 @@
  #include <linux/buffer_head.h>
  #include <linux/random.h>
@@ -2832,10 +2644,9 @@
  	inode->i_flags |= S_NOQUOTA;
  	inode->i_nlink = 0;
  	iput(inode);
-diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
-index 0384e53..045eaf9 100644
---- a/fs/ext3/inode.c
-+++ b/fs/ext3/inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/inode.c
+--- linux-2.6.16.13/fs/ext3/inode.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/inode.c	2006-04-26 19:07:50 +0200
 @@ -36,6 +36,7 @@
  #include <linux/writeback.h>
  #include <linux/mpage.h>
@@ -3023,10 +2834,9 @@
  		error = ext3_mark_inode_dirty(handle, inode);
  		ext3_journal_stop(handle);
  	}
-diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c
-index 556cd55..6ed8a19 100644
---- a/fs/ext3/ioctl.c
-+++ b/fs/ext3/ioctl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/ioctl.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/ioctl.c
+--- linux-2.6.16.13/fs/ext3/ioctl.c	2006-02-18 14:40:22 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/ioctl.c	2006-04-29 02:00:39 +0200
 @@ -8,11 +8,13 @@
   */
  
@@ -3120,7 +2930,7 @@
 +			return -EROFS;
 +		if (!(inode->i_sb->s_flags & MS_TAGXID))
 +			return -ENOSYS;
-+		if (get_user(xid, (int *) arg))
++		if (get_user(xid, (int __user *) arg))
 +			return -EFAULT;
 +
 +		handle = ext3_journal_start(inode, 1);
@@ -3141,10 +2951,9 @@
  
  	default:
  		return -ENOTTY;
-diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
-index b8f5cd1..329eae3 100644
---- a/fs/ext3/namei.c
-+++ b/fs/ext3/namei.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/namei.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/namei.c
+--- linux-2.6.16.13/fs/ext3/namei.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/namei.c	2006-04-26 19:07:50 +0200
 @@ -36,6 +36,7 @@
  #include <linux/quotaops.h>
  #include <linux/buffer_head.h>
@@ -3175,10 +2984,9 @@
  	.permission	= ext3_permission,
 +	.sync_flags	= ext3_sync_flags,
  }; 
-diff --git a/fs/ext3/super.c b/fs/ext3/super.c
-index 56bf765..4337596 100644
---- a/fs/ext3/super.c
-+++ b/fs/ext3/super.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/super.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/super.c
+--- linux-2.6.16.13/fs/ext3/super.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/super.c	2006-04-26 19:07:50 +0200
 @@ -634,7 +634,7 @@ enum {
  	Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
  	Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
@@ -3231,10 +3039,9 @@
  
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT3_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
-diff --git a/fs/ext3/symlink.c b/fs/ext3/symlink.c
-index 4f79122..d9526d7 100644
---- a/fs/ext3/symlink.c
-+++ b/fs/ext3/symlink.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/symlink.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/symlink.c
+--- linux-2.6.16.13/fs/ext3/symlink.c	2005-08-29 22:25:30 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/symlink.c	2006-04-26 19:07:50 +0200
 @@ -40,6 +40,7 @@ struct inode_operations ext3_symlink_ino
  	.listxattr	= ext3_listxattr,
  	.removexattr	= generic_removexattr,
@@ -3249,10 +3056,9 @@
  #endif
 +	.sync_flags	= ext3_sync_flags,
  };
-diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c
-index e8d60bf..fac3f24 100644
---- a/fs/ext3/xattr.c
-+++ b/fs/ext3/xattr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ext3/xattr.c linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/xattr.c
+--- linux-2.6.16.13/fs/ext3/xattr.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ext3/xattr.c	2006-04-26 19:07:50 +0200
 @@ -58,6 +58,7 @@
  #include <linux/mbcache.h>
  #include <linux/quotaops.h>
@@ -3294,10 +3100,9 @@
  	goto cleanup;
  
  bad_block:
-diff --git a/fs/fcntl.c b/fs/fcntl.c
-index dc4a700..84d0e40 100644
---- a/fs/fcntl.c
-+++ b/fs/fcntl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/fcntl.c linux-2.6.16.13-vs2.0.2-rc19/fs/fcntl.c
+--- linux-2.6.16.13/fs/fcntl.c	2006-02-18 14:40:22 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/fcntl.c	2006-04-26 19:07:50 +0200
 @@ -18,6 +18,7 @@
  #include <linux/ptrace.h>
  #include <linux/signal.h>
@@ -3351,10 +3156,9 @@
  		if (p) {
  			send_sigurg_to_task(p, fown);
  		}
-diff --git a/fs/file_table.c b/fs/file_table.c
-index 44fabea..cc11ccb 100644
---- a/fs/file_table.c
-+++ b/fs/file_table.c
+diff -NurpP --minimal linux-2.6.16.13/fs/file_table.c linux-2.6.16.13-vs2.0.2-rc19/fs/file_table.c
+--- linux-2.6.16.13/fs/file_table.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/file_table.c	2006-04-26 19:07:50 +0200
 @@ -22,6 +22,8 @@
  #include <linux/fsnotify.h>
  #include <linux/sysctl.h>
@@ -3391,10 +3195,9 @@
  		file_kill(file);
  		file_free(file);
  	}
-diff --git a/fs/hfsplus/ioctl.c b/fs/hfsplus/ioctl.c
-index 13cf848..cccd9fc 100644
---- a/fs/hfsplus/ioctl.c
-+++ b/fs/hfsplus/ioctl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/hfsplus/ioctl.c linux-2.6.16.13-vs2.0.2-rc19/fs/hfsplus/ioctl.c
+--- linux-2.6.16.13/fs/hfsplus/ioctl.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/hfsplus/ioctl.c	2006-04-26 19:07:50 +0200
 @@ -16,6 +16,7 @@
  #include <linux/fs.h>
  #include <linux/sched.h>
@@ -3413,10 +3216,9 @@
  			return -EROFS;
  
  		if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER))
-diff --git a/fs/inode.c b/fs/inode.c
-index d0be615..e989f5f 100644
---- a/fs/inode.c
-+++ b/fs/inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/inode.c
+--- linux-2.6.16.13/fs/inode.c	2006-02-18 14:40:22 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/inode.c	2006-04-26 19:07:50 +0200
 @@ -116,6 +116,9 @@ static struct inode *alloc_inode(struct 
  		struct address_space * const mapping = &inode->i_data;
  
@@ -3436,10 +3238,9 @@
  /**
   * clear_inode - clear an inode
   * @inode: inode to clear
-diff --git a/fs/ioctl.c b/fs/ioctl.c
-index f8aeec3..cfcaad7 100644
---- a/fs/ioctl.c
-+++ b/fs/ioctl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ioctl.c linux-2.6.16.13-vs2.0.2-rc19/fs/ioctl.c
+--- linux-2.6.16.13/fs/ioctl.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ioctl.c	2006-04-29 02:00:39 +0200
 @@ -13,10 +13,19 @@
  #include <linux/fs.h>
  #include <linux/security.h>
@@ -3472,7 +3273,7 @@
 +			/* fixme: if stealth, return -ENOTTY */
 +			error = -EPERM;
 +			if (capable(CAP_CONTEXT))
-+				error = put_user(inode->i_xid, (int *) arg);
++				error = put_user(inode->i_xid, (int __user *) arg);
 +			break;
 +		}
 +		case FIOC_SETXID: {
@@ -3490,7 +3291,7 @@
 +			if (!(inode->i_sb->s_flags & MS_TAGXID))
 +				break;
 +			error = -EFAULT;
-+			if (get_user(xid, (int *) arg))
++			if (get_user(xid, (int __user *) arg))
 +				break;
 +			error = 0;
 +			inode->i_xid = (xid & 0xFFFF);
@@ -3509,10 +3310,9 @@
  		default:
  			if (S_ISREG(filp->f_dentry->d_inode->i_mode))
  				error = file_ioctl(filp, cmd, arg);
-diff --git a/fs/ioprio.c b/fs/ioprio.c
-index ca77008..5d86209 100644
---- a/fs/ioprio.c
-+++ b/fs/ioprio.c
+diff -NurpP --minimal linux-2.6.16.13/fs/ioprio.c linux-2.6.16.13-vs2.0.2-rc19/fs/ioprio.c
+--- linux-2.6.16.13/fs/ioprio.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/ioprio.c	2006-04-26 19:07:50 +0200
 @@ -24,6 +24,7 @@
  #include <linux/blkdev.h>
  #include <linux/capability.h>
@@ -3526,7 +3326,7 @@
  				user = current->user;
  			else
 -				user = find_user(who);
-+				user = find_user(who, vx_current_xid());
++				user = find_user(vx_current_xid(), who);
  
  			if (!user)
  				break;
@@ -3535,14 +3335,13 @@
  				user = current->user;
  			else
 -				user = find_user(who);
-+				user = find_user(who, vx_current_xid());
++				user = find_user(vx_current_xid(), who);
  
  			if (!user)
  				break;
-diff --git a/fs/jfs/acl.c b/fs/jfs/acl.c
-index 461e493..5df5582 100644
---- a/fs/jfs/acl.c
-+++ b/fs/jfs/acl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/acl.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/acl.c
+--- linux-2.6.16.13/fs/jfs/acl.c	2005-10-28 20:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/acl.c	2006-04-26 19:07:50 +0200
 @@ -229,7 +229,8 @@ int jfs_setattr(struct dentry *dentry, s
  		return rc;
  
@@ -3553,10 +3352,9 @@
  		if (DQUOT_TRANSFER(inode, iattr))
  			return -EDQUOT;
  	}
-diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
-index 9f942ca..3df7857 100644
---- a/fs/jfs/inode.c
-+++ b/fs/jfs/inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/inode.c
+--- linux-2.6.16.13/fs/jfs/inode.c	2005-10-28 20:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/inode.c	2006-04-26 19:07:50 +0200
 @@ -22,6 +22,7 @@
  #include <linux/buffer_head.h>
  #include <linux/pagemap.h>
@@ -3573,10 +3371,9 @@
  	}
  
  	clear_inode(inode);
-diff --git a/fs/jfs/jfs_dtree.c b/fs/jfs/jfs_dtree.c
-index 404f33e..e567174 100644
---- a/fs/jfs/jfs_dtree.c
-+++ b/fs/jfs/jfs_dtree.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/jfs_dtree.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_dtree.c
+--- linux-2.6.16.13/fs/jfs/jfs_dtree.c	2005-08-29 22:25:31 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_dtree.c	2006-04-26 19:07:50 +0200
 @@ -102,6 +102,7 @@
  
  #include <linux/fs.h>
@@ -3696,10 +3493,9 @@
  				/* Free quota allocation */
  				DQUOT_FREE_BLOCK(ip, xlen);
  
-diff --git a/fs/jfs/jfs_extent.c b/fs/jfs/jfs_extent.c
-index 4879603..ecd440e 100644
---- a/fs/jfs/jfs_extent.c
-+++ b/fs/jfs/jfs_extent.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/jfs_extent.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_extent.c
+--- linux-2.6.16.13/fs/jfs/jfs_extent.c	2005-08-29 22:25:32 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_extent.c	2006-04-26 19:07:50 +0200
 @@ -18,6 +18,7 @@
  
  #include <linux/fs.h>
@@ -3760,10 +3556,9 @@
  			DQUOT_FREE_BLOCK(ip, nxlen);
  			goto exit;
  		}
-diff --git a/fs/jfs/jfs_filsys.h b/fs/jfs/jfs_filsys.h
-index 72a5588..7f0d552 100644
---- a/fs/jfs/jfs_filsys.h
-+++ b/fs/jfs/jfs_filsys.h
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/jfs_filsys.h linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_filsys.h
+--- linux-2.6.16.13/fs/jfs/jfs_filsys.h	2005-10-28 20:49:44 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_filsys.h	2006-04-26 19:07:50 +0200
 @@ -84,6 +84,7 @@
  #define JFS_DIR_INDEX		0x00200000	/* Persistant index for */
  						/* directory entries    */
@@ -3772,10 +3567,9 @@
  
  /*
   *	buffer cache configuration
-diff --git a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c
-index 31b4aa1..a321fc4 100644
---- a/fs/jfs/jfs_imap.c
-+++ b/fs/jfs/jfs_imap.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/jfs_imap.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_imap.c
+--- linux-2.6.16.13/fs/jfs/jfs_imap.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_imap.c	2006-04-26 19:07:50 +0200
 @@ -45,6 +45,7 @@
  #include <linux/buffer_head.h>
  #include <linux/pagemap.h>
@@ -3784,7 +3578,7 @@
  
  #include "jfs_incore.h"
  #include "jfs_inode.h"
-@@ -3076,14 +3077,21 @@ static void duplicateIXtree(struct super
+@@ -3074,14 +3075,21 @@ static void duplicateIXtree(struct super
  static int copy_from_dinode(struct dinode * dip, struct inode *ip)
  {
  	struct jfs_inode_info *jfs_ip = JFS_IP(ip);
@@ -3808,7 +3602,7 @@
  	ip->i_size = le64_to_cpu(dip->di_size);
  	ip->i_atime.tv_sec = le32_to_cpu(dip->di_atime.tv_sec);
  	ip->i_atime.tv_nsec = le32_to_cpu(dip->di_atime.tv_nsec);
-@@ -3134,6 +3142,8 @@ static int copy_from_dinode(struct dinod
+@@ -3132,6 +3140,8 @@ static int copy_from_dinode(struct dinod
  static void copy_to_dinode(struct dinode * dip, struct inode *ip)
  {
  	struct jfs_inode_info *jfs_ip = JFS_IP(ip);
@@ -3817,7 +3611,7 @@
  
  	dip->di_fileset = cpu_to_le32(jfs_ip->fileset);
  	dip->di_inostamp = cpu_to_le32(JFS_SBI(ip->i_sb)->inostamp);
-@@ -3142,8 +3152,11 @@ static void copy_to_dinode(struct dinode
+@@ -3140,8 +3150,11 @@ static void copy_to_dinode(struct dinode
  	dip->di_size = cpu_to_le64(ip->i_size);
  	dip->di_nblocks = cpu_to_le64(PBLK2LBLK(ip->i_sb, ip->i_blocks));
  	dip->di_nlink = cpu_to_le32(ip->i_nlink);
@@ -3831,10 +3625,9 @@
  	/*
  	 * mode2 is only needed for storing the higher order bits.
  	 * Trust i_mode for the lower order ones
-diff --git a/fs/jfs/jfs_inode.c b/fs/jfs/jfs_inode.c
-index 2af5efb..4340659 100644
---- a/fs/jfs/jfs_inode.c
-+++ b/fs/jfs/jfs_inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/jfs_inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_inode.c
+--- linux-2.6.16.13/fs/jfs/jfs_inode.c	2005-08-29 22:25:32 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_inode.c	2006-04-26 19:07:50 +0200
 @@ -18,6 +18,8 @@
  
  #include <linux/fs.h>
@@ -3862,10 +3655,9 @@
  		DQUOT_DROP(inode);
  		inode->i_flags |= S_NOQUOTA;
  		inode->i_nlink = 0;
-diff --git a/fs/jfs/jfs_xtree.c b/fs/jfs/jfs_xtree.c
-index e72f4eb..677890c 100644
---- a/fs/jfs/jfs_xtree.c
-+++ b/fs/jfs/jfs_xtree.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/jfs_xtree.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_xtree.c
+--- linux-2.6.16.13/fs/jfs/jfs_xtree.c	2006-01-03 17:29:57 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/jfs_xtree.c	2006-04-26 19:07:50 +0200
 @@ -21,6 +21,7 @@
  
  #include <linux/fs.h>
@@ -3957,10 +3749,9 @@
  	/* update quota allocation to reflect freed blocks */
  	DQUOT_FREE_BLOCK(ip, nfreed);
  
-diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
-index 4abbe86..a32f2f5 100644
---- a/fs/jfs/namei.c
-+++ b/fs/jfs/namei.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/namei.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/namei.c
+--- linux-2.6.16.13/fs/jfs/namei.c	2006-01-03 17:29:57 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/namei.c	2006-04-26 19:07:50 +0200
 @@ -20,6 +20,7 @@
  #include <linux/fs.h>
  #include <linux/ctype.h>
@@ -3977,10 +3768,9 @@
  	dentry = d_splice_alias(ip, dentry);
  
  	if (dentry && (JFS_SBI(dip->i_sb)->mntflag & JFS_OS2))
-diff --git a/fs/jfs/super.c b/fs/jfs/super.c
-index 8d31f13..b71f608 100644
---- a/fs/jfs/super.c
-+++ b/fs/jfs/super.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/super.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/super.c
+--- linux-2.6.16.13/fs/jfs/super.c	2006-02-18 14:40:22 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/super.c	2006-04-26 19:07:50 +0200
 @@ -195,7 +195,7 @@ static void jfs_put_super(struct super_b
  enum {
  	Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize,
@@ -4035,10 +3825,9 @@
  
  	if (newLVSize) {
  		printk(KERN_ERR "resize option for remount only\n");
-diff --git a/fs/jfs/xattr.c b/fs/jfs/xattr.c
-index f23048f..cba307d 100644
---- a/fs/jfs/xattr.c
-+++ b/fs/jfs/xattr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/jfs/xattr.c linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/xattr.c
+--- linux-2.6.16.13/fs/jfs/xattr.c	2006-02-18 14:40:22 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/jfs/xattr.c	2006-04-26 19:07:50 +0200
 @@ -23,6 +23,7 @@
  #include <linux/posix_acl_xattr.h>
  #include <linux/quotaops.h>
@@ -4116,10 +3905,9 @@
  
  	inode->i_ctime = CURRENT_TIME;
  
-diff --git a/fs/libfs.c b/fs/libfs.c
-index 71fd08f..30110a2 100644
---- a/fs/libfs.c
-+++ b/fs/libfs.c
+diff -NurpP --minimal linux-2.6.16.13/fs/libfs.c linux-2.6.16.13-vs2.0.2-rc19/fs/libfs.c
+--- linux-2.6.16.13/fs/libfs.c	2006-02-18 14:40:22 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/libfs.c	2006-04-26 19:07:50 +0200
 @@ -122,7 +122,8 @@ static inline unsigned char dt_type(stru
   * both impossible due to the lock on directory.
   */
@@ -4166,10 +3954,9 @@
  EXPORT_SYMBOL(generic_read_dir);
  EXPORT_SYMBOL(get_sb_pseudo);
  EXPORT_SYMBOL(simple_commit_write);
-diff --git a/fs/locks.c b/fs/locks.c
-index 909eab8..5141c22 100644
---- a/fs/locks.c
-+++ b/fs/locks.c
+diff -NurpP --minimal linux-2.6.16.13/fs/locks.c linux-2.6.16.13-vs2.0.2-rc19/fs/locks.c
+--- linux-2.6.16.13/fs/locks.c	2006-05-03 16:59:00 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/locks.c	2006-04-26 19:07:50 +0200
 @@ -125,6 +125,7 @@
  #include <linux/syscalls.h>
  #include <linux/time.h>
@@ -4347,10 +4134,9 @@
  		lock_get_status(q, fl, ++i, "");
  		move_lock_status(&q, &pos, offset);
  
-diff --git a/fs/namei.c b/fs/namei.c
-index 8dc2b03..aacff04 100644
---- a/fs/namei.c
-+++ b/fs/namei.c
+diff -NurpP --minimal linux-2.6.16.13/fs/namei.c linux-2.6.16.13-vs2.0.2-rc19/fs/namei.c
+--- linux-2.6.16.13/fs/namei.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/namei.c	2006-04-26 19:07:50 +0200
 @@ -32,6 +32,9 @@
  #include <linux/file.h>
  #include <linux/fcntl.h>
@@ -4379,7 +4165,7 @@
 +
 +	vxwprintk(1, "xid=%d denied access to %p[#%d,%lu] »%s«.",
 +		vx_current_xid(), inode, inode->i_xid, inode->i_ino,
-+		vxd_path(nd->dentry, nd->mnt));
++		vxd_cond_path(nd));
 +	return -EACCES;
 +}
 +
@@ -4669,10 +4455,9 @@
  	new_dentry = lookup_hash(&newnd);
  	error = PTR_ERR(new_dentry);
  	if (IS_ERR(new_dentry))
-diff --git a/fs/namespace.c b/fs/namespace.c
-index 058a448..8668603 100644
---- a/fs/namespace.c
-+++ b/fs/namespace.c
+diff -NurpP --minimal linux-2.6.16.13/fs/namespace.c linux-2.6.16.13-vs2.0.2-rc19/fs/namespace.c
+--- linux-2.6.16.13/fs/namespace.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/namespace.c	2006-04-28 01:59:36 +0200
 @@ -23,6 +23,8 @@
  #include <linux/namei.h>
  #include <linux/security.h>
@@ -4765,6 +4550,11 @@
 -	seq_putc(m, ' ');
 -	seq_path(m, mnt, mnt->mnt_root, " \t\n\\");
 -	seq_putc(m, ' ');
+-	mangle(m, mnt->mnt_sb->s_type->name);
+-	seq_puts(m, mnt->mnt_sb->s_flags & MS_RDONLY ? " ro" : " rw");
+-	for (fs_infop = fs_info; fs_infop->flag; fs_infop++) {
+-		if (mnt->mnt_sb->s_flags & fs_infop->flag)
+-			seq_puts(m, fs_infop->str);
 +	if (vx_flags(VXF_HIDE_MOUNT, 0))
 +		return 0;
 +	if (!mnt_is_reachable(mnt))
@@ -4778,16 +4568,11 @@
 +		seq_putc(m, ' ');
 +		seq_path(m, mnt, mnt->mnt_root, " \t\n\\");
 +		seq_putc(m, ' ');
-+	}
- 	mangle(m, mnt->mnt_sb->s_type->name);
--	seq_puts(m, mnt->mnt_sb->s_flags & MS_RDONLY ? " ro" : " rw");
--	for (fs_infop = fs_info; fs_infop->flag; fs_infop++) {
--		if (mnt->mnt_sb->s_flags & fs_infop->flag)
--			seq_puts(m, fs_infop->str);
--	}
+ 	}
 -	for (fs_infop = mnt_info; fs_infop->flag; fs_infop++) {
 -		if (mnt->mnt_flags & fs_infop->flag)
 -			seq_puts(m, fs_infop->str);
++	mangle(m, mnt->mnt_sb->s_type->name);
 +	seq_putc(m, ' ');
 +	for (p = fs_info; (p->s_flag | p->mnt_flag) ; p++) {
 +		if ((s_flags & p->s_flag) || (mnt_flags & p->mnt_flag)) {
@@ -4860,20 +4645,20 @@
  
  	retval = -EPERM;
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_MOUNT))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
  		goto dput_and_out;
  
  	retval = do_umount(nd.mnt, flags);
-@@ -634,6 +702,8 @@ static int mount_is_safe(struct nameidat
+@@ -632,7 +700,7 @@ asmlinkage long sys_oldumount(char __use
+ 
+ static int mount_is_safe(struct nameidata *nd)
  {
- 	if (capable(CAP_SYS_ADMIN))
+-	if (capable(CAP_SYS_ADMIN))
++	if (vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
  		return 0;
-+	if (vx_ccaps(VXC_SECURE_MOUNT))
-+		return 0;
  	return -EPERM;
  #ifdef notyet
- 	if (S_ISLNK(nd->dentry->d_inode->i_mode))
-@@ -861,11 +931,13 @@ static int do_change_type(struct nameida
+@@ -861,11 +929,13 @@ static int do_change_type(struct nameida
  /*
   * do loopback mount.
   */
@@ -4888,7 +4673,7 @@
  	if (err)
  		return err;
  	if (!old_name || !*old_name)
-@@ -891,6 +963,12 @@ static int do_loopback(struct nameidata 
+@@ -891,6 +961,12 @@ static int do_loopback(struct nameidata 
  	if (!mnt)
  		goto out;
  
@@ -4901,7 +4686,7 @@
  	err = graft_tree(mnt, nd);
  	if (err) {
  		LIST_HEAD(umount_list);
-@@ -899,6 +977,7 @@ static int do_loopback(struct nameidata 
+@@ -899,6 +975,7 @@ static int do_loopback(struct nameidata 
  		spin_unlock(&vfsmount_lock);
  		release_mounts(&umount_list);
  	}
@@ -4909,7 +4694,7 @@
  
  out:
  	up_write(&namespace_sem);
-@@ -912,12 +991,12 @@ out:
+@@ -912,12 +989,12 @@ out:
   * on it - tough luck.
   */
  static int do_remount(struct nameidata *nd, int flags, int mnt_flags,
@@ -4920,29 +4705,29 @@
  	struct super_block *sb = nd->mnt->mnt_sb;
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_REMOUNT))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_REMOUNT))
  		return -EPERM;
  
  	if (!check_mnt(nd->mnt))
-@@ -951,7 +1030,7 @@ static int do_move_mount(struct nameidat
+@@ -951,7 +1028,7 @@ static int do_move_mount(struct nameidat
  	struct nameidata old_nd, parent_nd;
  	struct vfsmount *p;
  	int err = 0;
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_MOUNT))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
  		return -EPERM;
  	if (!old_name || !*old_name)
  		return -EINVAL;
-@@ -1031,7 +1110,7 @@ static int do_new_mount(struct nameidata
+@@ -1031,7 +1108,7 @@ static int do_new_mount(struct nameidata
  		return -EINVAL;
  
  	/* we need capabilities... */
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_MOUNT))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
  		return -EPERM;
  
  	mnt = do_kern_mount(type, flags, name, data);
-@@ -1269,6 +1348,7 @@ long do_mount(char *dev_name, char *dir_
+@@ -1269,6 +1346,7 @@ long do_mount(char *dev_name, char *dir_
  	struct nameidata nd;
  	int retval = 0;
  	int mnt_flags = 0;
@@ -4950,7 +4735,7 @@
  
  	/* Discard magic */
  	if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
-@@ -1284,7 +1364,17 @@ long do_mount(char *dev_name, char *dir_
+@@ -1284,7 +1362,17 @@ long do_mount(char *dev_name, char *dir_
  	if (data_page)
  		((char *)data_page)[PAGE_SIZE - 1] = 0;
  
@@ -4968,7 +4753,7 @@
  	if (flags & MS_NOSUID)
  		mnt_flags |= MNT_NOSUID;
  	if (flags & MS_NODEV)
-@@ -1296,6 +1386,8 @@ long do_mount(char *dev_name, char *dir_
+@@ -1296,6 +1384,8 @@ long do_mount(char *dev_name, char *dir_
  	if (flags & MS_NODIRATIME)
  		mnt_flags |= MNT_NODIRATIME;
  
@@ -4977,7 +4762,7 @@
  	flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE |
  		   MS_NOATIME | MS_NODIRATIME);
  
-@@ -1310,9 +1402,9 @@ long do_mount(char *dev_name, char *dir_
+@@ -1310,9 +1400,9 @@ long do_mount(char *dev_name, char *dir_
  
  	if (flags & MS_REMOUNT)
  		retval = do_remount(&nd, flags & ~MS_REMOUNT, mnt_flags,
@@ -4989,19 +4774,18 @@
  	else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE))
  		retval = do_change_type(&nd, flags);
  	else if (flags & MS_MOVE)
-@@ -1411,7 +1503,7 @@ int copy_namespace(int flags, struct tas
+@@ -1410,7 +1500,7 @@ int copy_namespace(int flags, struct tas
  	if (!(flags & CLONE_NEWNS))
  		return 0;
  
 -	if (!capable(CAP_SYS_ADMIN)) {
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_MOUNT)) {
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT)) {
  		err = -EPERM;
  		goto out;
  	}
-diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
-index a1554be..07d6baf 100644
---- a/fs/nfs/dir.c
-+++ b/fs/nfs/dir.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfs/dir.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfs/dir.c
+--- linux-2.6.16.13/fs/nfs/dir.c	2006-02-18 14:40:23 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfs/dir.c	2006-04-26 19:07:50 +0200
 @@ -28,9 +28,11 @@
  #include <linux/sunrpc/clnt.h>
  #include <linux/nfs_fs.h>
@@ -5032,10 +4816,9 @@
  		return 0;
  	return 1;
  }
-diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
-index a77ee95..d2205df 100644
---- a/fs/nfs/inode.c
-+++ b/fs/nfs/inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfs/inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfs/inode.c
+--- linux-2.6.16.13/fs/nfs/inode.c	2006-02-18 14:40:23 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfs/inode.c	2006-04-26 19:07:50 +0200
 @@ -35,6 +35,7 @@
  #include <linux/mount.h>
  #include <linux/nfs_idmap.h>
@@ -5163,10 +4946,9 @@
  
  	if (fattr->valid & (NFS_ATTR_FATTR_V3 | NFS_ATTR_FATTR_V4)) {
  		/*
-diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
-index b6c0b50..d525c30 100644
---- a/fs/nfs/nfs3xdr.c
-+++ b/fs/nfs/nfs3xdr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfs/nfs3xdr.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfs/nfs3xdr.c
+--- linux-2.6.16.13/fs/nfs/nfs3xdr.c	2006-02-18 14:40:23 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfs/nfs3xdr.c	2006-04-26 19:07:50 +0200
 @@ -22,6 +22,7 @@
  #include <linux/nfs3.h>
  #include <linux/nfs_fs.h>
@@ -5256,10 +5038,9 @@
  	if (args->type == NF3CHR || args->type == NF3BLK) {
  		*p++ = htonl(MAJOR(args->rdev));
  		*p++ = htonl(MINOR(args->rdev));
-diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c
-index c0a754e..a12c6a8 100644
---- a/fs/nfs/nfsroot.c
-+++ b/fs/nfs/nfsroot.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfs/nfsroot.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfs/nfsroot.c
+--- linux-2.6.16.13/fs/nfs/nfsroot.c	2006-02-18 14:40:23 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfs/nfsroot.c	2006-04-26 19:07:50 +0200
 @@ -87,6 +87,7 @@
  #include <linux/root_dev.h>
  #include <net/ipconfig.h>
@@ -5306,10 +5087,9 @@
  	if (strlen(buf) + strlen(cp) > NFS_MAXPATHLEN) {
  		printk(KERN_ERR "Root-NFS: Pathname for remote directory too long.\n");
  		return -1;
-diff --git a/fs/nfsd/auth.c b/fs/nfsd/auth.c
-index cfe9ce8..672a9b1 100644
---- a/fs/nfsd/auth.c
-+++ b/fs/nfsd/auth.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfsd/auth.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/auth.c
+--- linux-2.6.16.13/fs/nfsd/auth.c	2004-08-14 12:56:14 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/auth.c	2006-04-26 19:07:50 +0200
 @@ -9,6 +9,7 @@
  #include <linux/sunrpc/svc.h>
  #include <linux/sunrpc/svcauth.h>
@@ -5342,10 +5122,9 @@
  		cap_t(current->cap_effective) &= ~CAP_NFSD_MASK;
  	} else {
  		cap_t(current->cap_effective) |= (CAP_NFSD_MASK &
-diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
-index 243d94b..75491e3 100644
---- a/fs/nfsd/nfs3xdr.c
-+++ b/fs/nfsd/nfs3xdr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfsd/nfs3xdr.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/nfs3xdr.c
+--- linux-2.6.16.13/fs/nfsd/nfs3xdr.c	2006-04-09 13:49:54 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/nfs3xdr.c	2006-04-26 19:07:50 +0200
 @@ -21,6 +21,7 @@
  #include <linux/sunrpc/svc.h>
  #include <linux/nfsd/nfsd.h>
@@ -5394,10 +5173,9 @@
  	if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
  		p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
  	} else {
-diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c
-index 06da750..a725cd1 100644
---- a/fs/nfsd/nfs4recover.c
-+++ b/fs/nfsd/nfs4recover.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfsd/nfs4recover.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/nfs4recover.c
+--- linux-2.6.16.13/fs/nfsd/nfs4recover.c	2006-02-18 14:40:23 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/nfs4recover.c	2006-04-26 19:07:50 +0200
 @@ -155,7 +155,7 @@ nfsd4_create_clid_dir(struct nfs4_client
  		dprintk("NFSD: nfsd4_create_clid_dir: DIRECTORY EXISTS\n");
  		goto out_put;
@@ -5425,10 +5203,9 @@
  	mutex_unlock(&dir->d_inode->i_mutex);
  	return status;
  }
-diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
-index 69d3501..753cd9f 100644
---- a/fs/nfsd/nfs4xdr.c
-+++ b/fs/nfsd/nfs4xdr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfsd/nfs4xdr.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/nfs4xdr.c
+--- linux-2.6.16.13/fs/nfsd/nfs4xdr.c	2006-02-18 14:40:23 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/nfs4xdr.c	2006-04-26 19:07:50 +0200
 @@ -57,6 +57,7 @@
  #include <linux/nfsd_idmap.h>
  #include <linux/nfs4.h>
@@ -5458,10 +5235,9 @@
  		if (status == nfserr_resource)
  			goto out_resource;
  		if (status)
-diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c
-index e3a0797..9671d96 100644
---- a/fs/nfsd/nfsxdr.c
-+++ b/fs/nfsd/nfsxdr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfsd/nfsxdr.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/nfsxdr.c
+--- linux-2.6.16.13/fs/nfsd/nfsxdr.c	2006-04-09 13:49:54 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/nfsxdr.c	2006-04-26 19:07:50 +0200
 @@ -15,6 +15,7 @@
  #include <linux/nfsd/nfsd.h>
  #include <linux/nfsd/xdr.h>
@@ -5510,10 +5286,9 @@
  
  	if (S_ISLNK(type) && stat->size > NFS_MAXPATHLEN) {
  		*p++ = htonl(NFS_MAXPATHLEN);
-diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
-index 5320e5a..c9a49da 100644
---- a/fs/nfsd/vfs.c
-+++ b/fs/nfsd/vfs.c
+diff -NurpP --minimal linux-2.6.16.13/fs/nfsd/vfs.c linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/vfs.c
+--- linux-2.6.16.13/fs/nfsd/vfs.c	2006-02-18 14:40:23 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/nfsd/vfs.c	2006-04-26 19:07:50 +0200
 @@ -1160,13 +1160,13 @@ nfsd_create(struct svc_rqst *rqstp, stru
  		err = vfs_create(dirp, dchild, iap->ia_mode, NULL);
  		break;
@@ -5577,10 +5352,9 @@
  				return nfserr_rofs;
  			if (/* (acc & MAY_WRITE) && */ IS_IMMUTABLE(inode))
  				return nfserr_perm;
-diff --git a/fs/open.c b/fs/open.c
-index 70e0230..a0bf558 100644
---- a/fs/open.c
-+++ b/fs/open.c
+diff -NurpP --minimal linux-2.6.16.13/fs/open.c linux-2.6.16.13-vs2.0.2-rc19/fs/open.c
+--- linux-2.6.16.13/fs/open.c	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/open.c	2006-04-26 19:07:50 +0200
 @@ -27,6 +27,9 @@
  #include <linux/pagemap.h>
  #include <linux/syscalls.h>
@@ -5609,7 +5383,7 @@
  		goto dput_and_out;
  
  	error = -EPERM;
-@@ -372,7 +377,7 @@ asmlinkage long sys_utime(char __user * 
+@@ -378,7 +383,7 @@ asmlinkage long sys_utime(char __user * 
  	inode = nd.dentry->d_inode;
  
  	error = -EROFS;
@@ -5618,7 +5392,7 @@
  		goto dput_and_out;
  
  	/* Don't worry, the checks are done in inode_change_ok() */
-@@ -429,7 +434,7 @@ long do_utimes(int dfd, char __user *fil
+@@ -435,7 +440,7 @@ long do_utimes(int dfd, char __user *fil
  	inode = nd.dentry->d_inode;
  
  	error = -EROFS;
@@ -5627,7 +5401,7 @@
  		goto dput_and_out;
  
  	/* Don't worry, the checks are done in inode_change_ok() */
-@@ -516,7 +521,8 @@ asmlinkage long sys_faccessat(int dfd, c
+@@ -522,7 +527,8 @@ asmlinkage long sys_faccessat(int dfd, c
  	if (!res) {
  		res = vfs_permission(&nd, mode);
  		/* SuS v2 requires we report a read only fs too */
@@ -5637,7 +5411,7 @@
  		   && !special_file(nd.dentry->d_inode->i_mode))
  			res = -EROFS;
  		path_release(&nd);
-@@ -627,7 +633,7 @@ asmlinkage long sys_fchmod(unsigned int 
+@@ -633,7 +639,7 @@ asmlinkage long sys_fchmod(unsigned int 
  	inode = dentry->d_inode;
  
  	err = -EROFS;
@@ -5646,7 +5420,7 @@
  		goto out_putf;
  	err = -EPERM;
  	if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
-@@ -660,7 +666,7 @@ asmlinkage long sys_fchmodat(int dfd, co
+@@ -666,7 +672,7 @@ asmlinkage long sys_fchmodat(int dfd, co
  	inode = nd.dentry->d_inode;
  
  	error = -EROFS;
@@ -5655,7 +5429,7 @@
  		goto dput_and_out;
  
  	error = -EPERM;
-@@ -686,7 +692,8 @@ asmlinkage long sys_chmod(const char __u
+@@ -692,7 +698,8 @@ asmlinkage long sys_chmod(const char __u
  	return sys_fchmodat(AT_FDCWD, filename, mode);
  }
  
@@ -5665,7 +5439,7 @@
  {
  	struct inode * inode;
  	int error;
-@@ -698,7 +705,7 @@ static int chown_common(struct dentry * 
+@@ -704,7 +711,7 @@ static int chown_common(struct dentry * 
  		goto out;
  	}
  	error = -EROFS;
@@ -5674,7 +5448,7 @@
  		goto out;
  	error = -EPERM;
  	if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
-@@ -706,11 +713,11 @@ static int chown_common(struct dentry * 
+@@ -712,11 +719,11 @@ static int chown_common(struct dentry * 
  	newattrs.ia_valid =  ATTR_CTIME;
  	if (user != (uid_t) -1) {
  		newattrs.ia_valid |= ATTR_UID;
@@ -5688,7 +5462,7 @@
  	}
  	if (!S_ISDIR(inode->i_mode))
  		newattrs.ia_valid |= ATTR_KILL_SUID|ATTR_KILL_SGID;
-@@ -728,7 +735,7 @@ asmlinkage long sys_chown(const char __u
+@@ -734,7 +741,7 @@ asmlinkage long sys_chown(const char __u
  
  	error = user_path_walk(filename, &nd);
  	if (!error) {
@@ -5697,7 +5471,7 @@
  		path_release(&nd);
  	}
  	return error;
-@@ -747,7 +754,7 @@ asmlinkage long sys_fchownat(int dfd, co
+@@ -753,7 +760,7 @@ asmlinkage long sys_fchownat(int dfd, co
  	follow = (flag & AT_SYMLINK_NOFOLLOW) ? 0 : LOOKUP_FOLLOW;
  	error = __user_walk_fd(dfd, filename, follow, &nd);
  	if (!error) {
@@ -5706,7 +5480,7 @@
  		path_release(&nd);
  	}
  out:
-@@ -761,7 +768,7 @@ asmlinkage long sys_lchown(const char __
+@@ -767,7 +774,7 @@ asmlinkage long sys_lchown(const char __
  
  	error = user_path_walk_link(filename, &nd);
  	if (!error) {
@@ -5715,7 +5489,7 @@
  		path_release(&nd);
  	}
  	return error;
-@@ -775,7 +782,7 @@ asmlinkage long sys_fchown(unsigned int 
+@@ -781,7 +788,7 @@ asmlinkage long sys_fchown(unsigned int 
  
  	file = fget(fd);
  	if (file) {
@@ -5724,7 +5498,7 @@
  		fput(file);
  	}
  	return error;
-@@ -999,6 +1006,7 @@ repeat:
+@@ -1005,6 +1012,7 @@ repeat:
  	FD_SET(fd, fdt->open_fds);
  	FD_CLR(fd, fdt->close_on_exec);
  	fdt->next_fd = fd + 1;
@@ -5732,7 +5506,7 @@
  #if 1
  	/* Sanity check */
  	if (fdt->fd[fd] != NULL) {
-@@ -1021,6 +1029,7 @@ static void __put_unused_fd(struct files
+@@ -1027,6 +1035,7 @@ static void __put_unused_fd(struct files
  	__FD_CLR(fd, fdt->open_fds);
  	if (fd < fdt->next_fd)
  		fdt->next_fd = fd;
@@ -5740,10 +5514,9 @@
  }
  
  void fastcall put_unused_fd(unsigned int fd)
-diff --git a/fs/proc/array.c b/fs/proc/array.c
-index 7eb1bd7..8434cba 100644
---- a/fs/proc/array.c
-+++ b/fs/proc/array.c
+diff -NurpP --minimal linux-2.6.16.13/fs/proc/array.c linux-2.6.16.13-vs2.0.2-rc19/fs/proc/array.c
+--- linux-2.6.16.13/fs/proc/array.c	2006-02-18 14:40:26 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/proc/array.c	2006-04-26 19:07:50 +0200
 @@ -75,6 +75,9 @@
  #include <linux/times.h>
  #include <linux/cpuset.h>
@@ -5906,10 +5679,9 @@
  		tcomm,
  		state,
  		ppid,
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 20feb75..0f3449e 100644
---- a/fs/proc/base.c
-+++ b/fs/proc/base.c
+diff -NurpP --minimal linux-2.6.16.13/fs/proc/base.c linux-2.6.16.13-vs2.0.2-rc19/fs/proc/base.c
+--- linux-2.6.16.13/fs/proc/base.c	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/proc/base.c	2006-04-26 19:07:50 +0200
 @@ -72,6 +72,8 @@
  #include <linux/cpuset.h>
  #include <linux/audit.h>
@@ -5955,7 +5727,7 @@
  	E(PROC_TID_OOM_SCORE,  "oom_score",S_IFREG|S_IRUGO),
  	E(PROC_TID_OOM_ADJUST, "oom_adj", S_IFREG|S_IRUGO|S_IWUSR),
  #ifdef CONFIG_AUDITSYSCALL
-@@ -537,6 +547,11 @@ static int proc_check_chroot(struct dent
+@@ -541,6 +551,11 @@ static int proc_check_chroot(struct dent
  	struct dentry *de, *base;
  	struct vfsmount *our_vfsmnt, *mnt;
  	int res = 0;
@@ -5967,7 +5739,7 @@
  	read_lock(&current->fs->lock);
  	our_vfsmnt = mntget(current->fs->rootmnt);
  	base = dget(current->fs->root);
-@@ -546,11 +561,11 @@ static int proc_check_chroot(struct dent
+@@ -550,11 +565,11 @@ static int proc_check_chroot(struct dent
  	de = root;
  	mnt = vfsmnt;
  
@@ -5983,7 +5755,7 @@
  	}
  
  	if (!is_subdir(de, base))
-@@ -560,8 +575,9 @@ static int proc_check_chroot(struct dent
+@@ -564,8 +579,9 @@ static int proc_check_chroot(struct dent
  exit:
  	dput(base);
  	mntput(our_vfsmnt);
@@ -5994,7 +5766,7 @@
  	return res;
  out:
  	spin_unlock(&vfsmount_lock);
-@@ -1221,7 +1237,7 @@ static int proc_pident_readdir(struct fi
+@@ -1225,7 +1241,7 @@ static int proc_pident_readdir(struct fi
  	struct inode *inode = dentry->d_inode;
  	struct pid_entry *p;
  	ino_t ino;
@@ -6003,7 +5775,7 @@
  
  	ret = -ENOENT;
  	if (!pid_alive(proc_task(inode)))
-@@ -1252,11 +1268,20 @@ static int proc_pident_readdir(struct fi
+@@ -1256,11 +1272,20 @@ static int proc_pident_readdir(struct fi
  			goto out;
  		}
  		p = ents + i;
@@ -6024,7 +5796,7 @@
  			p++;
  		}
  	}
-@@ -1330,6 +1355,7 @@ static struct inode *proc_pid_make_inode
+@@ -1334,6 +1359,7 @@ static struct inode *proc_pid_make_inode
  		inode->i_uid = task->euid;
  		inode->i_gid = task->egid;
  	}
@@ -6032,7 +5804,7 @@
  	security_task_to_inode(task, inode);
  
  out:
-@@ -1355,6 +1381,11 @@ static int pid_revalidate(struct dentry 
+@@ -1359,6 +1385,11 @@ static int pid_revalidate(struct dentry 
  {
  	struct inode *inode = dentry->d_inode;
  	struct task_struct *task = proc_task(inode);
@@ -6044,7 +5816,7 @@
  	if (pid_alive(task)) {
  		if (proc_type(inode) == PROC_TGID_INO || proc_type(inode) == PROC_TID_INO || task_dumpable(task)) {
  			inode->i_uid = task->euid;
-@@ -1366,6 +1397,7 @@ static int pid_revalidate(struct dentry 
+@@ -1370,6 +1401,7 @@ static int pid_revalidate(struct dentry 
  		security_task_to_inode(task, inode);
  		return 1;
  	}
@@ -6052,7 +5824,7 @@
  	d_drop(dentry);
  	return 0;
  }
-@@ -1600,6 +1632,9 @@ static struct file_operations proc_tgid_
+@@ -1609,6 +1641,9 @@ static struct file_operations proc_tgid_
  static struct inode_operations proc_tgid_attr_inode_operations;
  #endif
  
@@ -6062,7 +5834,7 @@
  static int get_tid_list(int index, unsigned int *tids, struct inode *dir);
  
  /* SMP-safe */
-@@ -1787,15 +1822,33 @@ static struct dentry *proc_pident_lookup
+@@ -1796,15 +1831,33 @@ static struct dentry *proc_pident_lookup
  			inode->i_fop = &proc_loginuid_operations;
  			break;
  #endif
@@ -6098,7 +5870,7 @@
  out:
  	return ERR_PTR(error);
  }
-@@ -1879,14 +1932,14 @@ static int proc_self_readlink(struct den
+@@ -1888,14 +1941,14 @@ static int proc_self_readlink(struct den
  			      int buflen)
  {
  	char tmp[30];
@@ -6115,7 +5887,7 @@
  	return ERR_PTR(vfs_follow_link(nd,tmp));
  }	
  
-@@ -1949,6 +2002,20 @@ void proc_pid_flush(struct dentry *proc_
+@@ -1958,6 +2011,20 @@ void proc_pid_flush(struct dentry *proc_
  	}
  }
  
@@ -6136,7 +5908,7 @@
  /* SMP-safe */
  struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd)
  {
-@@ -1985,13 +2052,14 @@ struct dentry *proc_pid_lookup(struct in
+@@ -1994,13 +2061,14 @@ struct dentry *proc_pid_lookup(struct in
  	if (!task)
  		goto out;
  
@@ -6156,7 +5928,7 @@
  	inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO;
  	inode->i_op = &proc_tgid_base_inode_operations;
  	inode->i_fop = &proc_tgid_base_operations;
-@@ -2020,6 +2088,8 @@ struct dentry *proc_pid_lookup(struct in
+@@ -2029,6 +2097,8 @@ struct dentry *proc_pid_lookup(struct in
  		goto out;
  	}
  	return NULL;
@@ -6165,7 +5937,7 @@
  out:
  	return ERR_PTR(-ENOENT);
  }
-@@ -2035,6 +2105,8 @@ static struct dentry *proc_task_lookup(s
+@@ -2044,6 +2114,8 @@ static struct dentry *proc_task_lookup(s
  	tid = name_to_int(dentry);
  	if (tid == ~0U)
  		goto out;
@@ -6174,7 +5946,7 @@
  
  	read_lock(&tasklist_lock);
  	task = find_task_by_pid(tid);
-@@ -2046,11 +2118,14 @@ static struct dentry *proc_task_lookup(s
+@@ -2055,11 +2127,14 @@ static struct dentry *proc_task_lookup(s
  	if (leader->tgid != task->tgid)
  		goto out_drop_task;
  
@@ -6191,7 +5963,7 @@
  	inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO;
  	inode->i_op = &proc_tid_base_inode_operations;
  	inode->i_fop = &proc_tid_base_operations;
-@@ -2090,7 +2165,7 @@ static int get_tgid_list(int index, unsi
+@@ -2099,7 +2174,7 @@ static int get_tgid_list(int index, unsi
  	read_lock(&tasklist_lock);
  	p = NULL;
  	if (version) {
@@ -6200,7 +5972,7 @@
  		if (p && !thread_group_leader(p))
  			p = NULL;
  	}
-@@ -2102,11 +2177,15 @@ static int get_tgid_list(int index, unsi
+@@ -2111,11 +2186,15 @@ static int get_tgid_list(int index, unsi
  
  	for ( ; p != &init_task; p = next_task(p)) {
  		int tgid = p->pid;
@@ -6217,7 +5989,7 @@
  		nr_tgids++;
  		if (nr_tgids >= PROC_MAXPIDS)
  			break;
-@@ -2136,10 +2215,13 @@ static int get_tid_list(int index, unsig
+@@ -2145,10 +2224,13 @@ static int get_tid_list(int index, unsig
  	if (pid_alive(task)) do {
  		int tid = task->pid;
  
@@ -6232,7 +6004,7 @@
  		nr_tids++;
  		if (nr_tids >= PROC_MAXPIDS)
  			break;
-@@ -2215,11 +2297,14 @@ static int proc_task_readdir(struct file
+@@ -2224,11 +2306,14 @@ static int proc_task_readdir(struct file
  	unsigned int nr_tids, i;
  	struct dentry *dentry = filp->f_dentry;
  	struct inode *inode = dentry->d_inode;
@@ -6248,10 +6020,9 @@
  		goto out;
  	retval = 0;
  
-diff --git a/fs/proc/generic.c b/fs/proc/generic.c
-index 20e5c45..38c8540 100644
---- a/fs/proc/generic.c
-+++ b/fs/proc/generic.c
+diff -NurpP --minimal linux-2.6.16.13/fs/proc/generic.c linux-2.6.16.13-vs2.0.2-rc19/fs/proc/generic.c
+--- linux-2.6.16.13/fs/proc/generic.c	2006-02-18 14:40:26 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/proc/generic.c	2006-04-26 19:07:50 +0200
 @@ -19,6 +19,7 @@
  #include <linux/idr.h>
  #include <linux/namei.h>
@@ -6307,10 +6078,9 @@
  		} else {
  			kfree(ent);
  			ent = NULL;
-diff --git a/fs/proc/inode.c b/fs/proc/inode.c
-index 075d3e9..6d25888 100644
---- a/fs/proc/inode.c
-+++ b/fs/proc/inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/proc/inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/proc/inode.c
+--- linux-2.6.16.13/fs/proc/inode.c	2006-04-09 13:49:54 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/proc/inode.c	2006-04-26 19:07:50 +0200
 @@ -170,6 +170,8 @@ struct inode *proc_get_inode(struct supe
  			inode->i_uid = de->uid;
  			inode->i_gid = de->gid;
@@ -6320,10 +6090,9 @@
  		if (de->size)
  			inode->i_size = de->size;
  		if (de->nlink)
-diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c
-index 1d24fea..d84fdcb 100644
---- a/fs/proc/proc_misc.c
-+++ b/fs/proc/proc_misc.c
+diff -NurpP --minimal linux-2.6.16.13/fs/proc/proc_misc.c linux-2.6.16.13-vs2.0.2-rc19/fs/proc/proc_misc.c
+--- linux-2.6.16.13/fs/proc/proc_misc.c	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/proc/proc_misc.c	2006-05-03 16:06:20 +0200
 @@ -53,6 +53,8 @@
  #include <asm/div64.h>
  #include "internal.h"
@@ -6402,10 +6171,9 @@
  	return proc_calc_metrics(page, start, off, count, eof, len);
  }
  
-diff --git a/fs/proc/root.c b/fs/proc/root.c
-index c3fd361..307ba7b 100644
---- a/fs/proc/root.c
-+++ b/fs/proc/root.c
+diff -NurpP --minimal linux-2.6.16.13/fs/proc/root.c linux-2.6.16.13-vs2.0.2-rc19/fs/proc/root.c
+--- linux-2.6.16.13/fs/proc/root.c	2006-04-09 13:49:54 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/proc/root.c	2006-04-26 19:07:50 +0200
 @@ -25,6 +25,9 @@ struct proc_dir_entry *proc_net, *proc_n
  #ifdef CONFIG_SYSCTL
  struct proc_dir_entry *proc_sys_root;
@@ -6424,10 +6192,9 @@
  }
  
  static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat
-diff --git a/fs/quota.c b/fs/quota.c
-index ba9e0bf..1b690cc 100644
---- a/fs/quota.c
-+++ b/fs/quota.c
+diff -NurpP --minimal linux-2.6.16.13/fs/quota.c linux-2.6.16.13-vs2.0.2-rc19/fs/quota.c
+--- linux-2.6.16.13/fs/quota.c	2006-02-18 14:40:26 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/quota.c	2006-04-28 01:59:36 +0200
 @@ -17,6 +17,9 @@
  #include <linux/buffer_head.h>
  #include <linux/capability.h>
@@ -6443,12 +6210,12 @@
  		if (((type == USRQUOTA && current->euid != id) ||
  		     (type == GRPQUOTA && !in_egroup_p(id))) &&
 -		    !capable(CAP_SYS_ADMIN))
-+		    !capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
++		    !vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
  			return -EPERM;
  	}
  	else if (cmd != Q_GETFMT && cmd != Q_SYNC && cmd != Q_GETINFO)
 -		if (!capable(CAP_SYS_ADMIN))
-+		if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
++		if (!vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
  			return -EPERM;
  
  	return 0;
@@ -6457,11 +6224,11 @@
  		if (((type == XQM_USRQUOTA && current->euid != id) ||
  		     (type == XQM_GRPQUOTA && !in_egroup_p(id))) &&
 -		     !capable(CAP_SYS_ADMIN))
-+		     !capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
++		     !vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
  			return -EPERM;
  	} else if (cmd != Q_XGETQSTAT && cmd != Q_XQUOTASYNC) {
 -		if (!capable(CAP_SYS_ADMIN))
-+		if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
++		if (!vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
  			return -EPERM;
  	}
  
@@ -6533,36 +6300,9 @@
  		sb = get_super(bdev);
  		bdput(bdev);
  		if (!sb)
-diff --git a/fs/read_write.c b/fs/read_write.c
-index 3f7a1a6..fbee209 100644
---- a/fs/read_write.c
-+++ b/fs/read_write.c
-@@ -667,9 +667,8 @@ static ssize_t do_sendfile(int out_fd, i
- 		if (!(in_file->f_mode & FMODE_PREAD))
- 			goto fput_in;
- 	retval = rw_verify_area(READ, in_file, ppos, count);
--	if (retval < 0)
-+	if (retval)
- 		goto fput_in;
--	count = retval;
- 
- 	retval = security_file_permission (in_file, MAY_READ);
- 	if (retval)
-@@ -689,9 +688,8 @@ static ssize_t do_sendfile(int out_fd, i
- 		goto fput_out;
- 	out_inode = out_file->f_dentry->d_inode;
- 	retval = rw_verify_area(WRITE, out_file, &out_file->f_pos, count);
--	if (retval < 0)
-+	if (retval)
- 		goto fput_out;
--	count = retval;
- 
- 	retval = security_file_permission (out_file, MAY_WRITE);
- 	if (retval)
-diff --git a/fs/reiserfs/bitmap.c b/fs/reiserfs/bitmap.c
-index 909f71e..49cd1aa 100644
---- a/fs/reiserfs/bitmap.c
-+++ b/fs/reiserfs/bitmap.c
+diff -NurpP --minimal linux-2.6.16.13/fs/reiserfs/bitmap.c linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/bitmap.c
+--- linux-2.6.16.13/fs/reiserfs/bitmap.c	2005-08-29 22:25:33 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/bitmap.c	2006-04-26 19:07:50 +0200
 @@ -13,6 +13,7 @@
  #include <linux/reiserfs_fs_sb.h>
  #include <linux/reiserfs_fs_i.h>
@@ -6659,20 +6399,18 @@
  	}
  
  	return CARRY_ON;
-diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c
-index be12879..db38c09 100644
---- a/fs/reiserfs/file.c
-+++ b/fs/reiserfs/file.c
+diff -NurpP --minimal linux-2.6.16.13/fs/reiserfs/file.c linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/file.c
+--- linux-2.6.16.13/fs/reiserfs/file.c	2006-04-09 13:49:54 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/file.c	2006-04-26 19:07:50 +0200
 @@ -1586,4 +1586,5 @@ struct inode_operations reiserfs_file_in
  	.listxattr = reiserfs_listxattr,
  	.removexattr = reiserfs_removexattr,
  	.permission = reiserfs_permission,
 +	.sync_flags = reiserfs_sync_flags,
  };
-diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
-index d60f623..a218e53 100644
---- a/fs/reiserfs/inode.c
-+++ b/fs/reiserfs/inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/reiserfs/inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/inode.c
+--- linux-2.6.16.13/fs/reiserfs/inode.c	2006-04-09 13:49:55 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/inode.c	2006-04-26 19:07:50 +0200
 @@ -17,6 +17,8 @@
  #include <linux/mpage.h>
  #include <linux/writeback.h>
@@ -6856,10 +6594,9 @@
  				mark_inode_dirty(inode);
  				error =
  				    journal_end(&th, inode->i_sb, jbegin_count);
-diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c
-index 745c881..e2dbca0 100644
---- a/fs/reiserfs/ioctl.c
-+++ b/fs/reiserfs/ioctl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/reiserfs/ioctl.c linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/ioctl.c
+--- linux-2.6.16.13/fs/reiserfs/ioctl.c	2006-04-09 13:49:55 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/ioctl.c	2006-04-26 19:07:50 +0200
 @@ -4,6 +4,7 @@
  
  #include <linux/capability.h>
@@ -6930,10 +6667,9 @@
  			return -EROFS;
  		if (get_user(inode->i_generation, (int __user *)arg))
  			return -EFAULT;
-diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c
-index 284f785..6faa29e 100644
---- a/fs/reiserfs/namei.c
-+++ b/fs/reiserfs/namei.c
+diff -NurpP --minimal linux-2.6.16.13/fs/reiserfs/namei.c linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/namei.c
+--- linux-2.6.16.13/fs/reiserfs/namei.c	2006-04-09 13:49:55 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/namei.c	2006-04-26 19:07:50 +0200
 @@ -19,6 +19,7 @@
  #include <linux/reiserfs_xattr.h>
  #include <linux/smp_lock.h>
@@ -6981,10 +6717,9 @@
 +	.sync_flags = reiserfs_sync_flags,
  
  };
-diff --git a/fs/reiserfs/stree.c b/fs/reiserfs/stree.c
-index e2d08d7..83ea55e 100644
---- a/fs/reiserfs/stree.c
-+++ b/fs/reiserfs/stree.c
+diff -NurpP --minimal linux-2.6.16.13/fs/reiserfs/stree.c linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/stree.c
+--- linux-2.6.16.13/fs/reiserfs/stree.c	2005-08-29 22:25:33 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/stree.c	2006-04-26 19:07:50 +0200
 @@ -57,6 +57,7 @@
  #include <linux/smp_lock.h>
  #include <linux/buffer_head.h>
@@ -7060,10 +6795,9 @@
 +	}
  	return retval;
  }
-diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
-index d63da75..92a4bfd 100644
---- a/fs/reiserfs/super.c
-+++ b/fs/reiserfs/super.c
+diff -NurpP --minimal linux-2.6.16.13/fs/reiserfs/super.c linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/super.c
+--- linux-2.6.16.13/fs/reiserfs/super.c	2006-02-18 14:40:26 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/super.c	2006-04-26 19:07:50 +0200
 @@ -882,6 +882,9 @@ static int reiserfs_parse_options(struct
  		{"user_xattr",.setmask = 1 << REISERFS_UNSUPPORTED_OPT},
  		{"nouser_xattr",.clrmask = 1 << REISERFS_UNSUPPORTED_OPT},
@@ -7098,10 +6832,9 @@
  	rs = SB_DISK_SUPER_BLOCK(s);
  	/* Let's do basic sanity check to verify that underlying device is not
  	   smaller than the filesystem. If the check fails then abort and scream,
-diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
-index ffb79c4..b99819a 100644
---- a/fs/reiserfs/xattr.c
-+++ b/fs/reiserfs/xattr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/reiserfs/xattr.c linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/xattr.c
+--- linux-2.6.16.13/fs/reiserfs/xattr.c	2006-02-18 14:40:26 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/reiserfs/xattr.c	2006-04-26 19:07:50 +0200
 @@ -35,6 +35,7 @@
  #include <linux/namei.h>
  #include <linux/errno.h>
@@ -7119,10 +6852,9 @@
  		reiserfs_write_unlock_xattrs(inode->i_sb);
  		dput(root);
  	} else {
-diff --git a/fs/stat.c b/fs/stat.c
-index 9948cc1..543f1b8 100644
---- a/fs/stat.c
-+++ b/fs/stat.c
+diff -NurpP --minimal linux-2.6.16.13/fs/stat.c linux-2.6.16.13-vs2.0.2-rc19/fs/stat.c
+--- linux-2.6.16.13/fs/stat.c	2006-02-18 14:40:26 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/stat.c	2006-04-26 19:07:50 +0200
 @@ -27,6 +27,7 @@ void generic_fillattr(struct inode *inod
  	stat->nlink = inode->i_nlink;
  	stat->uid = inode->i_uid;
@@ -7131,10 +6863,9 @@
  	stat->rdev = inode->i_rdev;
  	stat->atime = inode->i_atime;
  	stat->mtime = inode->i_mtime;
-diff --git a/fs/super.c b/fs/super.c
-index e20b558..df4551c 100644
---- a/fs/super.c
-+++ b/fs/super.c
+diff -NurpP --minimal linux-2.6.16.13/fs/super.c linux-2.6.16.13-vs2.0.2-rc19/fs/super.c
+--- linux-2.6.16.13/fs/super.c	2006-04-09 13:49:55 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/super.c	2006-04-28 01:59:36 +0200
 @@ -37,6 +37,8 @@
  #include <linux/writeback.h>		/* for the emergency remount stuff */
  #include <linux/idr.h>
@@ -7159,7 +6890,7 @@
  
 +	sb = ERR_PTR(-EPERM);
 +	if ((type->fs_flags & FS_BINARY_MOUNTDATA) &&
-+		!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_BINARY_MOUNT))
++		!vx_capable(CAP_SYS_ADMIN, VXC_BINARY_MOUNT))
 +		goto out;
 +
 +	sb = ERR_PTR(-ENOMEM);
@@ -7180,10 +6911,9 @@
   	error = security_sb_kern_mount(sb, secdata);
   	if (error)
   		goto out_sb;
-diff --git a/fs/sysfs/mount.c b/fs/sysfs/mount.c
-index f1117e8..ea01b08 100644
---- a/fs/sysfs/mount.c
-+++ b/fs/sysfs/mount.c
+diff -NurpP --minimal linux-2.6.16.13/fs/sysfs/mount.c linux-2.6.16.13-vs2.0.2-rc19/fs/sysfs/mount.c
+--- linux-2.6.16.13/fs/sysfs/mount.c	2005-08-29 22:25:33 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/sysfs/mount.c	2006-04-26 19:07:50 +0200
 @@ -11,8 +11,6 @@
  
  #include "sysfs.h"
@@ -7202,10 +6932,9 @@
  	sb->s_op = &sysfs_ops;
  	sb->s_time_gran = 1;
  	sysfs_sb = sb;
-diff --git a/fs/xattr.c b/fs/xattr.c
-index 80eca7d..ad83a51 100644
---- a/fs/xattr.c
-+++ b/fs/xattr.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xattr.c linux-2.6.16.13-vs2.0.2-rc19/fs/xattr.c
+--- linux-2.6.16.13/fs/xattr.c	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xattr.c	2006-04-26 19:07:50 +0200
 @@ -17,6 +17,7 @@
  #include <linux/syscalls.h>
  #include <linux/module.h>
@@ -7306,10 +7035,9 @@
  	fput(f);
  	return error;
  }
-diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c
-index 4db4779..bff7f6d 100644
---- a/fs/xfs/linux-2.6/xfs_ioctl.c
-+++ b/fs/xfs/linux-2.6/xfs_ioctl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/linux-2.6/xfs_ioctl.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_ioctl.c
+--- linux-2.6.16.13/fs/xfs/linux-2.6/xfs_ioctl.c	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_ioctl.c	2006-04-26 19:07:50 +0200
 @@ -1100,6 +1100,8 @@ xfs_ioc_fsgeometry(
  #define LINUX_XFLAG_APPEND	0x00000020 /* writes to file may only append */
  #define LINUX_XFLAG_NODUMP	0x00000040 /* do not dump file */
@@ -7330,10 +7058,9 @@
  	if (di_flags & XFS_DIFLAG_APPEND)
  		flags |= LINUX_XFLAG_APPEND;
  	if (di_flags & XFS_DIFLAG_SYNC)
-diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c
-index d7f6f2d..40fdc3e 100644
---- a/fs/xfs/linux-2.6/xfs_iops.c
-+++ b/fs/xfs/linux-2.6/xfs_iops.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_iops.c
+--- linux-2.6.16.13/fs/xfs/linux-2.6/xfs_iops.c	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_iops.c	2006-04-26 19:07:50 +0200
 @@ -55,6 +55,7 @@
  #include <linux/xattr.h>
  #include <linux/namei.h>
@@ -7414,7 +7141,7 @@
  	if (ia_valid & ATTR_SIZE) {
  		vattr.va_mask |= XFS_AT_SIZE;
  		vattr.va_size = attr->ia_size;
-@@ -825,6 +870,7 @@ struct inode_operations linvfs_file_inod
+@@ -824,6 +869,7 @@ struct inode_operations linvfs_file_inod
  	.getxattr		= linvfs_getxattr,
  	.listxattr		= linvfs_listxattr,
  	.removexattr		= linvfs_removexattr,
@@ -7422,7 +7149,7 @@
  };
  
  struct inode_operations linvfs_dir_inode_operations = {
-@@ -844,6 +890,7 @@ struct inode_operations linvfs_dir_inode
+@@ -843,6 +889,7 @@ struct inode_operations linvfs_dir_inode
  	.getxattr		= linvfs_getxattr,
  	.listxattr		= linvfs_listxattr,
  	.removexattr		= linvfs_removexattr,
@@ -7430,16 +7157,15 @@
  };
  
  struct inode_operations linvfs_symlink_inode_operations = {
-@@ -857,4 +904,5 @@ struct inode_operations linvfs_symlink_i
+@@ -856,4 +903,5 @@ struct inode_operations linvfs_symlink_i
  	.getxattr		= linvfs_getxattr,
  	.listxattr		= linvfs_listxattr,
  	.removexattr		= linvfs_removexattr,
 +	.sync_flags		= linvfs_sync_flags,
  };
-diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h
-index 67389b7..b554e6f 100644
---- a/fs/xfs/linux-2.6/xfs_linux.h
-+++ b/fs/xfs/linux-2.6/xfs_linux.h
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/linux-2.6/xfs_linux.h linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_linux.h
+--- linux-2.6.16.13/fs/xfs/linux-2.6/xfs_linux.h	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_linux.h	2006-04-26 19:07:50 +0200
 @@ -133,6 +133,7 @@ BUFFER_FNS(PrivateStart, unwritten);
  #define current_pid()		(current->pid)
  #define current_fsuid(cred)	(current->fsuid)
@@ -7448,10 +7174,9 @@
  
  #define NBPP		PAGE_SIZE
  #define DPPSHFT		(PAGE_SHIFT - 9)
-diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
-index f22e426..92d8ba6 100644
---- a/fs/xfs/linux-2.6/xfs_super.c
-+++ b/fs/xfs/linux-2.6/xfs_super.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/linux-2.6/xfs_super.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_super.c
+--- linux-2.6.16.13/fs/xfs/linux-2.6/xfs_super.c	2006-04-09 13:49:55 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_super.c	2006-04-26 19:07:50 +0200
 @@ -161,6 +161,7 @@ xfs_revalidate_inode(
  	inode->i_nlink	= ip->i_d.di_nlink;
  	inode->i_uid	= ip->i_d.di_uid;
@@ -7488,10 +7213,9 @@
  	if (!error)
  		VFS_MNTUPDATE(vfsp, flags, args, error);
  	kmem_free(args, sizeof(*args));
-diff --git a/fs/xfs/linux-2.6/xfs_sysctl.c b/fs/xfs/linux-2.6/xfs_sysctl.c
-index a025649..6c39207 100644
---- a/fs/xfs/linux-2.6/xfs_sysctl.c
-+++ b/fs/xfs/linux-2.6/xfs_sysctl.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/linux-2.6/xfs_sysctl.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_sysctl.c
+--- linux-2.6.16.13/fs/xfs/linux-2.6/xfs_sysctl.c	2006-01-03 17:29:59 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_sysctl.c	2006-04-26 19:07:50 +0200
 @@ -58,74 +58,74 @@ xfs_stats_clear_proc_handler(
  STATIC ctl_table xfs_table[] = {
  	{XFS_RESTRICT_CHOWN, "restrict_chown", &xfs_params.restrict_chown.val,
@@ -7581,10 +7305,9 @@
  	&xfs_params.stats_clear.min, &xfs_params.stats_clear.max},
  #endif /* CONFIG_PROC_FS */
  
-diff --git a/fs/xfs/linux-2.6/xfs_vnode.c b/fs/xfs/linux-2.6/xfs_vnode.c
-index 260dd84..d973914 100644
---- a/fs/xfs/linux-2.6/xfs_vnode.c
-+++ b/fs/xfs/linux-2.6/xfs_vnode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/linux-2.6/xfs_vnode.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_vnode.c
+--- linux-2.6.16.13/fs/xfs/linux-2.6/xfs_vnode.c	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_vnode.c	2006-04-26 19:07:50 +0200
 @@ -103,6 +103,7 @@ vn_revalidate_core(
  	inode->i_nlink	    = vap->va_nlink;
  	inode->i_uid	    = vap->va_uid;
@@ -7608,10 +7331,9 @@
  	if (vap->va_xflags & XFS_XFLAG_APPEND)
  		inode->i_flags |= S_APPEND;
  	else
-diff --git a/fs/xfs/linux-2.6/xfs_vnode.h b/fs/xfs/linux-2.6/xfs_vnode.h
-index 0fe2419..696c62a 100644
---- a/fs/xfs/linux-2.6/xfs_vnode.h
-+++ b/fs/xfs/linux-2.6/xfs_vnode.h
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/linux-2.6/xfs_vnode.h linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_vnode.h
+--- linux-2.6.16.13/fs/xfs/linux-2.6/xfs_vnode.h	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/linux-2.6/xfs_vnode.h	2006-04-26 19:07:50 +0200
 @@ -386,6 +386,7 @@ typedef struct vattr {
  	xfs_nlink_t	va_nlink;	/* number of references to file */
  	uid_t		va_uid;		/* owner user id */
@@ -7637,16 +7359,15 @@
  
  #define XFS_AT_STAT	(XFS_AT_TYPE|XFS_AT_MODE|XFS_AT_UID|XFS_AT_GID|\
  		XFS_AT_FSID|XFS_AT_NODEID|XFS_AT_NLINK|XFS_AT_SIZE|\
-diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c
-index 6768843..b3ec736 100644
---- a/fs/xfs/quota/xfs_qm_syscalls.c
-+++ b/fs/xfs/quota/xfs_qm_syscalls.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/quota/xfs_qm_syscalls.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/quota/xfs_qm_syscalls.c
+--- linux-2.6.16.13/fs/xfs/quota/xfs_qm_syscalls.c	2006-04-09 13:49:55 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/quota/xfs_qm_syscalls.c	2006-04-28 01:59:36 +0200
 @@ -215,7 +215,7 @@ xfs_qm_scall_quotaoff(
  	xfs_qoff_logitem_t	*qoffstart;
  	int			nculprits;
  
 -	if (!force && !capable(CAP_SYS_ADMIN))
-+	if (!force && !capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
++	if (!force && !vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
  		return XFS_ERROR(EPERM);
  	/*
  	 * No file system can have quotas enabled on disk but not in core.
@@ -7655,7 +7376,7 @@
  	xfs_inode_t	*qip;
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
  		return XFS_ERROR(EPERM);
  	error = 0;
  	if (!XFS_SB_VERSION_HASQUOTA(&mp->m_sb) || flags == 0) {
@@ -7664,7 +7385,7 @@
  	__int64_t	sbflags;
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
  		return XFS_ERROR(EPERM);
  
  	flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
@@ -7673,14 +7394,13 @@
  	xfs_qcnt_t		hard, soft;
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
  		return XFS_ERROR(EPERM);
  
  	if ((newlim->d_fieldmask &
-diff --git a/fs/xfs/xfs_clnt.h b/fs/xfs/xfs_clnt.h
-index f57cc9a..6203fb4 100644
---- a/fs/xfs/xfs_clnt.h
-+++ b/fs/xfs/xfs_clnt.h
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/xfs_clnt.h linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_clnt.h
+--- linux-2.6.16.13/fs/xfs/xfs_clnt.h	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_clnt.h	2006-04-26 19:07:50 +0200
 @@ -100,5 +100,7 @@ struct xfs_mount_args {
   */
  #define XFSMNT2_COMPAT_IOSIZE	0x00000001	/* don't report large preferred
@@ -7689,10 +7409,9 @@
 +
  
  #endif	/* __XFS_CLNT_H__ */
-diff --git a/fs/xfs/xfs_dinode.h b/fs/xfs/xfs_dinode.h
-index 79d0d9e..a70e0b3 100644
---- a/fs/xfs/xfs_dinode.h
-+++ b/fs/xfs/xfs_dinode.h
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/xfs_dinode.h linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_dinode.h
+--- linux-2.6.16.13/fs/xfs/xfs_dinode.h	2006-04-09 13:49:55 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_dinode.h	2006-04-26 19:07:50 +0200
 @@ -53,7 +53,8 @@ typedef struct xfs_dinode_core
  	__uint32_t	di_gid;		/* owner's group id */
  	__uint32_t	di_nlink;	/* number of links to file */
@@ -7729,10 +7448,9 @@
 +	 XFS_DIFLAG_EXTSZINHERIT | XFS_DIFLAG_BARRIER | XFS_DIFLAG_IUNLINK)
  
  #endif	/* __XFS_DINODE_H__ */
-diff --git a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h
-index 14010f1..5354048 100644
---- a/fs/xfs/xfs_fs.h
-+++ b/fs/xfs/xfs_fs.h
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/xfs_fs.h linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_fs.h
+--- linux-2.6.16.13/fs/xfs/xfs_fs.h	2006-04-09 13:49:55 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_fs.h	2006-04-26 19:07:50 +0200
 @@ -67,6 +67,8 @@ struct fsxattr {
  #define XFS_XFLAG_NOSYMLINKS	0x00000400	/* disallow symlink creation */
  #define XFS_XFLAG_EXTSIZE	0x00000800	/* extent size allocator hint */
@@ -7752,10 +7470,9 @@
  	__u32		bs_dmevmask;	/* DMIG event mask		*/
  	__u16		bs_dmstate;	/* DMIG state info		*/
  	__u16		bs_aextents;	/* attribute number of extents	*/
-diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
-index 1d7f5a7..6a4089a 100644
---- a/fs/xfs/xfs_inode.c
-+++ b/fs/xfs/xfs_inode.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/xfs_inode.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_inode.c
+--- linux-2.6.16.13/fs/xfs/xfs_inode.c	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_inode.c	2006-04-26 19:07:50 +0200
 @@ -52,6 +52,7 @@
  #include "xfs_mac.h"
  #include "xfs_acl.h"
@@ -7821,10 +7538,9 @@
  	ip->i_d.di_projid = prid;
  	memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad));
  
-diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c
-index c59450e..d2a21c4 100644
---- a/fs/xfs/xfs_itable.c
-+++ b/fs/xfs/xfs_itable.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/xfs_itable.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_itable.c
+--- linux-2.6.16.13/fs/xfs/xfs_itable.c	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_itable.c	2006-04-26 19:07:50 +0200
 @@ -85,6 +85,7 @@ xfs_bulkstat_one_iget(
  	buf->bs_mode = dic->di_mode;
  	buf->bs_uid = dic->di_uid;
@@ -7841,10 +7557,9 @@
  	buf->bs_size = INT_GET(dic->di_size, ARCH_CONVERT);
  	buf->bs_atime.tv_sec = INT_GET(dic->di_atime.t_sec, ARCH_CONVERT);
  	buf->bs_atime.tv_nsec = INT_GET(dic->di_atime.t_nsec, ARCH_CONVERT);
-diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h
-index cd3cf96..74eec62 100644
---- a/fs/xfs/xfs_mount.h
-+++ b/fs/xfs/xfs_mount.h
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/xfs_mount.h linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_mount.h
+--- linux-2.6.16.13/fs/xfs/xfs_mount.h	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_mount.h	2006-04-26 19:07:50 +0200
 @@ -412,6 +412,7 @@ typedef struct xfs_mount {
  #define XFS_MOUNT_COMPAT_IOSIZE	(1ULL << 22)	/* don't report large preferred
  						 * I/O size in stat() */
@@ -7853,10 +7568,9 @@
  
  /*
   * Default minimum read and write sizes.
-diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c
-index b6ad370..09665b7 100644
---- a/fs/xfs/xfs_vfsops.c
-+++ b/fs/xfs/xfs_vfsops.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/xfs_vfsops.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_vfsops.c
+--- linux-2.6.16.13/fs/xfs/xfs_vfsops.c	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_vfsops.c	2006-04-26 19:07:50 +0200
 @@ -296,6 +296,8 @@ xfs_start_flags(
  
  	if (ap->flags2 & XFSMNT2_COMPAT_IOSIZE)
@@ -7894,10 +7608,9 @@
  		} else if (!strcmp(this_char, "osyncisdsync")) {
  			/* no-op, this is now the default */
  printk("XFS: osyncisdsync is now the default, option is deprecated.\n");
-diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
-index eaab355..aa90340 100644
---- a/fs/xfs/xfs_vnodeops.c
-+++ b/fs/xfs/xfs_vnodeops.c
+diff -NurpP --minimal linux-2.6.16.13/fs/xfs/xfs_vnodeops.c linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_vnodeops.c
+--- linux-2.6.16.13/fs/xfs/xfs_vnodeops.c	2006-02-18 14:40:27 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/fs/xfs/xfs_vnodeops.c	2006-04-26 19:07:50 +0200
 @@ -154,6 +154,7 @@ xfs_getattr(
  	vap->va_mode = ip->i_d.di_mode;
  	vap->va_uid = ip->i_d.di_uid;
@@ -7996,10 +7709,9 @@
  			if (vap->va_xflags & XFS_XFLAG_APPEND)
  				di_flags |= XFS_DIFLAG_APPEND;
  			if (vap->va_xflags & XFS_XFLAG_SYNC)
-diff --git a/include/asm-arm/tlb.h b/include/asm-arm/tlb.h
-index f49bfb7..1a17998 100644
---- a/include/asm-arm/tlb.h
-+++ b/include/asm-arm/tlb.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-arm/tlb.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-arm/tlb.h
+--- linux-2.6.16.13/include/asm-arm/tlb.h	2006-01-03 17:30:02 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-arm/tlb.h	2006-04-26 19:07:50 +0200
 @@ -20,6 +20,7 @@
  #include <asm/cacheflush.h>
  #include <asm/tlbflush.h>
@@ -8008,10 +7720,9 @@
  
  /*
   * TLB handling.  This allows us to remove pages from the page
-diff --git a/include/asm-arm26/tlb.h b/include/asm-arm26/tlb.h
-index 08ddd85..d730584 100644
---- a/include/asm-arm26/tlb.h
-+++ b/include/asm-arm26/tlb.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-arm26/tlb.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-arm26/tlb.h
+--- linux-2.6.16.13/include/asm-arm26/tlb.h	2006-01-03 17:30:02 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-arm26/tlb.h	2006-04-26 19:07:50 +0200
 @@ -3,6 +3,7 @@
  
  #include <asm/pgalloc.h>
@@ -8020,10 +7731,9 @@
  
  /*
   * TLB handling.  This allows us to remove pages from the page
-diff --git a/include/asm-arm26/unistd.h b/include/asm-arm26/unistd.h
-index be4c2fb..d296fb5 100644
---- a/include/asm-arm26/unistd.h
-+++ b/include/asm-arm26/unistd.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-arm26/unistd.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-arm26/unistd.h
+--- linux-2.6.16.13/include/asm-arm26/unistd.h	2006-01-03 17:30:02 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-arm26/unistd.h	2006-04-26 19:07:50 +0200
 @@ -304,6 +304,8 @@
  #define __NR_mq_getsetattr		(__NR_SYSCALL_BASE+279)
  #define __NR_waitid			(__NR_SYSCALL_BASE+280)
@@ -8033,10 +7743,9 @@
  /*
   * The following SWIs are ARM private. FIXME - make appropriate for arm26
   */
-diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
-index cdd4145..8dbedfa 100644
---- a/include/asm-generic/tlb.h
-+++ b/include/asm-generic/tlb.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-generic/tlb.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-generic/tlb.h
+--- linux-2.6.16.13/include/asm-generic/tlb.h	2006-01-03 17:30:02 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-generic/tlb.h	2006-04-26 19:07:50 +0200
 @@ -15,6 +15,7 @@
  
  #include <linux/config.h>
@@ -8045,10 +7754,9 @@
  #include <asm/pgalloc.h>
  #include <asm/tlbflush.h>
  
-diff --git a/include/asm-i386/elf.h b/include/asm-i386/elf.h
-index 4153d80..2962b84 100644
---- a/include/asm-i386/elf.h
-+++ b/include/asm-i386/elf.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-i386/elf.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-i386/elf.h
+--- linux-2.6.16.13/include/asm-i386/elf.h	2006-01-03 17:30:04 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-i386/elf.h	2006-04-26 19:07:50 +0200
 @@ -71,7 +71,7 @@ typedef struct user_fxsr_struct elf_fpxr
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
@@ -8058,10 +7766,9 @@
  
  /* regs is struct pt_regs, pr_reg is elf_gregset_t (which is
     now struct_user_regs, they are different) */
-diff --git a/include/asm-i386/page.h b/include/asm-i386/page.h
-index 997ca5d..53cfb1c 100644
---- a/include/asm-i386/page.h
-+++ b/include/asm-i386/page.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-i386/page.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-i386/page.h
+--- linux-2.6.16.13/include/asm-i386/page.h	2006-02-18 14:40:29 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-i386/page.h	2006-04-26 19:07:50 +0200
 @@ -109,19 +109,15 @@ extern int page_is_ram(unsigned long pag
  
  #endif /* __ASSEMBLY__ */
@@ -8085,10 +7792,9 @@
  #define __pa(x)			((unsigned long)(x)-PAGE_OFFSET)
  #define __va(x)			((void *)((unsigned long)(x)+PAGE_OFFSET))
  #define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
-diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h
-index feca5d9..bb5f709 100644
---- a/include/asm-i386/processor.h
-+++ b/include/asm-i386/processor.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-i386/processor.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-i386/processor.h
+--- linux-2.6.16.13/include/asm-i386/processor.h	2006-02-18 14:40:29 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-i386/processor.h	2006-04-26 19:07:50 +0200
 @@ -316,9 +316,10 @@ extern unsigned int mca_pentium_flag;
  extern int bootloader_type;
  
@@ -8102,10 +7808,9 @@
  
  /* This decides where the kernel will search for a free chunk of vm
   * space during mmap's.
-diff --git a/include/asm-ia64/tlb.h b/include/asm-ia64/tlb.h
-index 834370b..e2c6e18 100644
---- a/include/asm-ia64/tlb.h
-+++ b/include/asm-ia64/tlb.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-ia64/tlb.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-ia64/tlb.h
+--- linux-2.6.16.13/include/asm-ia64/tlb.h	2006-01-03 17:30:05 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-ia64/tlb.h	2006-04-26 19:07:50 +0200
 @@ -41,6 +41,7 @@
  #include <linux/mm.h>
  #include <linux/pagemap.h>
@@ -8114,10 +7819,9 @@
  
  #include <asm/pgalloc.h>
  #include <asm/processor.h>
-diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h
-index 3555699..0333931 100644
---- a/include/asm-powerpc/unistd.h
-+++ b/include/asm-powerpc/unistd.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-powerpc/unistd.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-powerpc/unistd.h
+--- linux-2.6.16.13/include/asm-powerpc/unistd.h	2006-02-18 14:40:31 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-powerpc/unistd.h	2006-04-26 19:07:50 +0200
 @@ -275,7 +275,7 @@
  #endif
  #define __NR_rtas		255
@@ -8127,10 +7831,9 @@
  /* 258 currently unused */
  #define __NR_mbind		259
  #define __NR_get_mempolicy	260
-diff --git a/include/asm-s390/unistd.h b/include/asm-s390/unistd.h
-index 657d582..c9371e9 100644
---- a/include/asm-s390/unistd.h
-+++ b/include/asm-s390/unistd.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-s390/unistd.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-s390/unistd.h
+--- linux-2.6.16.13/include/asm-s390/unistd.h	2006-02-18 14:40:31 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-s390/unistd.h	2006-04-26 19:07:50 +0200
 @@ -255,7 +255,7 @@
  #define __NR_clock_gettime	(__NR_timer_create+6)
  #define __NR_clock_getres	(__NR_timer_create+7)
@@ -8140,10 +7843,9 @@
  #define __NR_fadvise64_64	264
  #define __NR_statfs64		265
  #define __NR_fstatfs64		266
-diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h
-index 64ec640..12ef6c0 100644
---- a/include/asm-sparc/unistd.h
-+++ b/include/asm-sparc/unistd.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-sparc/unistd.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-sparc/unistd.h
+--- linux-2.6.16.13/include/asm-sparc/unistd.h	2006-02-18 14:40:31 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-sparc/unistd.h	2006-04-26 19:07:50 +0200
 @@ -283,7 +283,7 @@
  #define __NR_timer_getoverrun	264
  #define __NR_timer_delete	265
@@ -8153,10 +7855,9 @@
  #define __NR_io_setup		268
  #define __NR_io_destroy		269
  #define __NR_io_submit		270
-diff --git a/include/asm-sparc64/tlb.h b/include/asm-sparc64/tlb.h
-index 61c0188..41a5d1c 100644
---- a/include/asm-sparc64/tlb.h
-+++ b/include/asm-sparc64/tlb.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-sparc64/tlb.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-sparc64/tlb.h
+--- linux-2.6.16.13/include/asm-sparc64/tlb.h	2006-01-03 17:30:08 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-sparc64/tlb.h	2006-04-26 19:07:50 +0200
 @@ -3,6 +3,7 @@
  
  #include <linux/config.h>
@@ -8165,10 +7866,9 @@
  #include <asm/pgalloc.h>
  #include <asm/tlbflush.h>
  #include <asm/mmu_context.h>
-diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h
-index a284986..13f7e2f 100644
---- a/include/asm-sparc64/unistd.h
-+++ b/include/asm-sparc64/unistd.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-sparc64/unistd.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-sparc64/unistd.h
+--- linux-2.6.16.13/include/asm-sparc64/unistd.h	2006-02-18 14:40:32 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-sparc64/unistd.h	2006-04-26 19:07:50 +0200
 @@ -285,7 +285,7 @@
  #define __NR_timer_getoverrun	264
  #define __NR_timer_delete	265
@@ -8178,10 +7878,9 @@
  #define __NR_io_setup		268
  #define __NR_io_destroy		269
  #define __NR_io_submit		270
-diff --git a/include/asm-x86_64/unistd.h b/include/asm-x86_64/unistd.h
-index da0341c..732a094 100644
---- a/include/asm-x86_64/unistd.h
-+++ b/include/asm-x86_64/unistd.h
+diff -NurpP --minimal linux-2.6.16.13/include/asm-x86_64/unistd.h linux-2.6.16.13-vs2.0.2-rc19/include/asm-x86_64/unistd.h
+--- linux-2.6.16.13/include/asm-x86_64/unistd.h	2006-02-18 14:40:32 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/asm-x86_64/unistd.h	2006-04-26 19:07:50 +0200
 @@ -532,7 +532,7 @@ __SYSCALL(__NR_tgkill, sys_tgkill)
  #define __NR_utimes		235
  __SYSCALL(__NR_utimes, sys_utimes)
@@ -8191,10 +7890,9 @@
  #define __NR_mbind 		237
  __SYSCALL(__NR_mbind, sys_mbind)
  #define __NR_set_mempolicy 	238
-diff --git a/include/linux/capability.h b/include/linux/capability.h
-index 5a23ce7..34918bf 100644
---- a/include/linux/capability.h
-+++ b/include/linux/capability.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/capability.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/capability.h
+--- linux-2.6.16.13/include/linux/capability.h	2006-02-18 14:40:32 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/capability.h	2006-04-26 19:07:50 +0200
 @@ -235,6 +235,7 @@ typedef __u32 kernel_cap_t;
     arbitrary SCSI commands */
  /* Allow setting encryption key on loopback filesystem */
@@ -8215,10 +7913,9 @@
  #ifdef __KERNEL__
  /* 
   * Bounding set
-diff --git a/include/linux/devpts_fs.h b/include/linux/devpts_fs.h
-index b672ddc..3ca2799 100644
---- a/include/linux/devpts_fs.h
-+++ b/include/linux/devpts_fs.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/devpts_fs.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/devpts_fs.h
+--- linux-2.6.16.13/include/linux/devpts_fs.h	2004-08-14 12:55:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/devpts_fs.h	2006-04-26 19:07:50 +0200
 @@ -30,5 +30,7 @@ static inline void devpts_pty_kill(int n
  
  #endif
@@ -8227,10 +7924,9 @@
 +
  
  #endif /* _LINUX_DEVPTS_FS_H */
-diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h
-index f7bd1c7..d953a90 100644
---- a/include/linux/ext2_fs.h
-+++ b/include/linux/ext2_fs.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/ext2_fs.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/ext2_fs.h
+--- linux-2.6.16.13/include/linux/ext2_fs.h	2005-10-28 20:49:54 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/ext2_fs.h	2006-04-26 19:07:50 +0200
 @@ -192,10 +192,17 @@ struct ext2_group_desc
  #define EXT2_NOTAIL_FL			0x00008000 /* file tail should not be merged */
  #define EXT2_DIRSYNC_FL			0x00010000 /* dirsync behaviour (directories only) */
@@ -8278,10 +7974,9 @@
  
  
  #define clear_opt(o, opt)		o &= ~EXT2_MOUNT_##opt
-diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
-index c0272d7..af52318 100644
---- a/include/linux/ext3_fs.h
-+++ b/include/linux/ext3_fs.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/ext3_fs.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/ext3_fs.h
+--- linux-2.6.16.13/include/linux/ext3_fs.h	2005-10-28 20:49:54 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/ext3_fs.h	2006-04-26 19:07:50 +0200
 @@ -185,10 +185,20 @@ struct ext3_group_desc
  #define EXT3_NOTAIL_FL			0x00008000 /* file tail should not be merged */
  #define EXT3_DIRSYNC_FL			0x00010000 /* dirsync behaviour (directories only) */
@@ -8336,10 +8031,9 @@
  
  extern void ext3_read_inode (struct inode *);
  extern int  ext3_write_inode (struct inode *, int);
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 128d008..0e48413 100644
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/fs.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/fs.h
+--- linux-2.6.16.13/include/linux/fs.h	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/fs.h	2006-05-03 16:06:20 +0200
 @@ -109,6 +109,8 @@ extern int dir_notify_enable;
  #define MS_PRIVATE	(1<<18)	/* change to private */
  #define MS_SLAVE	(1<<19)	/* change to slave */
@@ -8459,7 +8153,7 @@
  };
  
  struct seq_file;
-@@ -1695,6 +1712,7 @@ extern int dcache_dir_open(struct inode 
+@@ -1688,6 +1705,7 @@ extern int dcache_dir_open(struct inode 
  extern int dcache_dir_close(struct inode *, struct file *);
  extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
  extern int dcache_readdir(struct file *, void *, filldir_t);
@@ -8467,10 +8161,9 @@
  extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *);
  extern int simple_statfs(struct super_block *, struct kstatfs *);
  extern int simple_link(struct dentry *, struct inode *, struct dentry *);
-diff --git a/include/linux/init_task.h b/include/linux/init_task.h
-index dcfd2ec..653f9e1 100644
---- a/include/linux/init_task.h
-+++ b/include/linux/init_task.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/init_task.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/init_task.h
+--- linux-2.6.16.13/include/linux/init_task.h	2006-01-03 17:30:09 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/init_task.h	2006-04-26 19:07:50 +0200
 @@ -121,6 +121,10 @@ extern struct group_info init_groups;
  	.journal_info	= NULL,						\
  	.cpu_timers	= INIT_CPU_TIMERS(tsk.cpu_timers),		\
@@ -8482,10 +8175,9 @@
  }
  
  
-diff --git a/include/linux/ipc.h b/include/linux/ipc.h
-index b291189..079c2fe 100644
---- a/include/linux/ipc.h
-+++ b/include/linux/ipc.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/ipc.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/ipc.h
+--- linux-2.6.16.13/include/linux/ipc.h	2004-08-14 12:54:46 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/ipc.h	2006-04-26 19:07:50 +0200
 @@ -66,6 +66,7 @@ struct kern_ipc_perm
  	mode_t		mode; 
  	unsigned long	seq;
@@ -8494,10 +8186,9 @@
  };
  
  #endif /* __KERNEL__ */
-diff --git a/include/linux/kernel.h b/include/linux/kernel.h
-index 3b507bf..d1c9dea 100644
---- a/include/linux/kernel.h
-+++ b/include/linux/kernel.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/kernel.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/kernel.h
+--- linux-2.6.16.13/include/linux/kernel.h	2006-02-18 14:40:33 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/kernel.h	2006-04-26 19:07:50 +0200
 @@ -17,6 +17,7 @@
  #include <asm/bug.h>
  
@@ -8506,10 +8197,9 @@
  
  #define INT_MAX		((int)(~0U>>1))
  #define INT_MIN		(-INT_MAX - 1)
-diff --git a/include/linux/major.h b/include/linux/major.h
-index e36a467..5cc9d84 100644
---- a/include/linux/major.h
-+++ b/include/linux/major.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/major.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/major.h
+--- linux-2.6.16.13/include/linux/major.h	2005-08-29 22:25:41 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/major.h	2006-04-26 19:07:50 +0200
 @@ -15,6 +15,7 @@
  #define HD_MAJOR		IDE0_MAJOR
  #define PTY_SLAVE_MAJOR		3
@@ -8518,10 +8208,9 @@
  #define TTYAUX_MAJOR		5
  #define LP_MAJOR		6
  #define VCS_MAJOR		7
-diff --git a/include/linux/mount.h b/include/linux/mount.h
-index b7472ae..a708e36 100644
---- a/include/linux/mount.h
-+++ b/include/linux/mount.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/mount.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/mount.h
+--- linux-2.6.16.13/include/linux/mount.h	2006-04-09 13:49:57 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/mount.h	2006-04-26 19:07:50 +0200
 @@ -22,10 +22,14 @@
  #define MNT_NOEXEC	0x04
  #define MNT_NOATIME	0x08
@@ -8545,10 +8234,9 @@
  };
  
  static inline struct vfsmount *mntget(struct vfsmount *mnt)
-diff --git a/include/linux/namespace.h b/include/linux/namespace.h
-index 3abc8e3..4e234d8 100644
---- a/include/linux/namespace.h
-+++ b/include/linux/namespace.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/namespace.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/namespace.h
+--- linux-2.6.16.13/include/linux/namespace.h	2006-02-18 14:40:34 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/namespace.h	2006-04-26 19:07:50 +0200
 @@ -16,6 +16,7 @@ struct namespace {
  extern int copy_namespace(int, struct task_struct *);
  extern void __put_namespace(struct namespace *namespace);
@@ -8557,10 +8245,9 @@
  
  static inline void put_namespace(struct namespace *namespace)
  {
-diff --git a/include/linux/net.h b/include/linux/net.h
-index 28195a2..3a89224 100644
---- a/include/linux/net.h
-+++ b/include/linux/net.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/net.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/net.h
+--- linux-2.6.16.13/include/linux/net.h	2006-02-18 14:40:34 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/net.h	2006-04-26 19:07:50 +0200
 @@ -62,6 +62,7 @@ typedef enum {
  #define SOCK_ASYNC_WAITDATA	1
  #define SOCK_NOSPACE		2
@@ -8569,10 +8256,9 @@
  
  #ifndef ARCH_HAS_SOCKET_TYPES
  /**
-diff --git a/include/linux/nfs_mount.h b/include/linux/nfs_mount.h
-index 659c754..b1531a0 100644
---- a/include/linux/nfs_mount.h
-+++ b/include/linux/nfs_mount.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/nfs_mount.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/nfs_mount.h
+--- linux-2.6.16.13/include/linux/nfs_mount.h	2005-08-29 22:25:42 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/nfs_mount.h	2006-04-26 19:07:50 +0200
 @@ -61,6 +61,7 @@ struct nfs_mount_data {
  #define NFS_MOUNT_NOACL		0x0800	/* 4 */
  #define NFS_MOUNT_STRICTLOCK	0x1000	/* reserved for NFSv4 */
@@ -8581,10 +8267,9 @@
  #define NFS_MOUNT_FLAGMASK	0xFFFF
  
  #endif
-diff --git a/include/linux/percpu.h b/include/linux/percpu.h
-index cb9039a..e436dbd 100644
---- a/include/linux/percpu.h
-+++ b/include/linux/percpu.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/percpu.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/percpu.h
+--- linux-2.6.16.13/include/linux/percpu.h	2006-04-09 13:49:57 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/percpu.h	2006-04-26 19:07:50 +0200
 @@ -8,7 +8,7 @@
  
  /* Enough to cover all DEFINE_PER_CPUs in kernel, including modules. */
@@ -8594,10 +8279,9 @@
  #endif
  
  /* Must be an lvalue. */
-diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
-index aa6322d..c892f9b 100644
---- a/include/linux/proc_fs.h
-+++ b/include/linux/proc_fs.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/proc_fs.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/proc_fs.h
+--- linux-2.6.16.13/include/linux/proc_fs.h	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/proc_fs.h	2006-04-26 19:07:50 +0200
 @@ -55,6 +55,7 @@ struct proc_dir_entry {
  	nlink_t nlink;
  	uid_t uid;
@@ -8618,10 +8302,9 @@
  	} op;
  	struct proc_dir_entry *pde;
  	struct inode vfs_inode;
-diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h
-index dad78ce..6213f2f 100644
---- a/include/linux/reiserfs_fs.h
-+++ b/include/linux/reiserfs_fs.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/reiserfs_fs.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/reiserfs_fs.h
+--- linux-2.6.16.13/include/linux/reiserfs_fs.h	2006-04-09 13:49:57 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/reiserfs_fs.h	2006-04-26 19:07:50 +0200
 @@ -829,6 +829,18 @@ struct stat_data_v1 {
  #define REISERFS_COMPR_FL     EXT2_COMPR_FL
  #define REISERFS_NOTAIL_FL    EXT2_NOTAIL_FL
@@ -8649,10 +8332,9 @@
  
  /* namei.c */
  void set_de_name_and_namelen(struct reiserfs_dir_entry *de);
-diff --git a/include/linux/reiserfs_fs_sb.h b/include/linux/reiserfs_fs_sb.h
-index 31b4c0b..3204ea0 100644
---- a/include/linux/reiserfs_fs_sb.h
-+++ b/include/linux/reiserfs_fs_sb.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/reiserfs_fs_sb.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/reiserfs_fs_sb.h
+--- linux-2.6.16.13/include/linux/reiserfs_fs_sb.h	2006-02-18 14:40:35 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/reiserfs_fs_sb.h	2006-04-26 19:07:50 +0200
 @@ -456,6 +456,7 @@ enum reiserfs_mount_options {
  	REISERFS_POSIXACL,
  	REISERFS_BARRIER_NONE,
@@ -8661,10 +8343,9 @@
  
  	/* Actions on error */
  	REISERFS_ERROR_PANIC,
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 62e6314..e02d5dd 100644
---- a/include/linux/sched.h
-+++ b/include/linux/sched.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/sched.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/sched.h
+--- linux-2.6.16.13/include/linux/sched.h	2006-04-09 13:49:57 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/sched.h	2006-04-26 19:07:50 +0200
 @@ -15,6 +15,7 @@
  #include <linux/cpumask.h>
  #include <linux/errno.h>
@@ -8779,10 +8460,9 @@
  static inline struct user_struct *get_uid(struct user_struct *u)
  {
  	atomic_inc(&u->__count);
-diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
-index c057f0b..e4b2803 100644
---- a/include/linux/shmem_fs.h
-+++ b/include/linux/shmem_fs.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/shmem_fs.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/shmem_fs.h
+--- linux-2.6.16.13/include/linux/shmem_fs.h	2006-04-09 13:49:57 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/shmem_fs.h	2006-04-26 19:07:50 +0200
 @@ -8,6 +8,9 @@
  
  #define SHMEM_NR_DIRECT 16
@@ -8793,10 +8473,9 @@
  struct shmem_inode_info {
  	spinlock_t		lock;
  	unsigned long		flags;
-diff --git a/include/linux/stat.h b/include/linux/stat.h
-index 8ff2a12..289a968 100644
---- a/include/linux/stat.h
-+++ b/include/linux/stat.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/stat.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/stat.h
+--- linux-2.6.16.13/include/linux/stat.h	2004-08-14 12:55:10 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/stat.h	2006-04-26 19:07:50 +0200
 @@ -63,6 +63,7 @@ struct kstat {
  	unsigned int	nlink;
  	uid_t		uid;
@@ -8805,10 +8484,9 @@
  	dev_t		rdev;
  	loff_t		size;
  	struct timespec  atime;
-diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h
-index be4772e..b27c818 100644
---- a/include/linux/sunrpc/auth.h
-+++ b/include/linux/sunrpc/auth.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/sunrpc/auth.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/sunrpc/auth.h
+--- linux-2.6.16.13/include/linux/sunrpc/auth.h	2006-02-18 14:40:35 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/sunrpc/auth.h	2006-04-26 19:07:50 +0200
 @@ -28,6 +28,7 @@
  struct auth_cred {
  	uid_t	uid;
@@ -8817,10 +8495,9 @@
  	struct group_info *group_info;
  };
  
-diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
-index f147e6b..2c892da 100644
---- a/include/linux/sunrpc/clnt.h
-+++ b/include/linux/sunrpc/clnt.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/sunrpc/clnt.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/sunrpc/clnt.h
+--- linux-2.6.16.13/include/linux/sunrpc/clnt.h	2006-02-18 14:40:35 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/sunrpc/clnt.h	2006-04-26 19:07:50 +0200
 @@ -51,7 +51,8 @@ struct rpc_clnt {
  				cl_intr     : 1,/* interruptible */
  				cl_autobind : 1,/* use getport() */
@@ -8831,18 +8508,17 @@
  
  	struct rpc_rtt *	cl_rtt;		/* RTO estimator data */
  	struct rpc_portmap *	cl_pmap;	/* port mapping */
-diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
-index bac61db..7e42ca6 100644
---- a/include/linux/sysctl.h
-+++ b/include/linux/sysctl.h
-@@ -148,6 +148,7 @@ enum
- 	KERN_SPIN_RETRY=70,	/* int: number of spinlock retries */
- 	KERN_ACPI_VIDEO_FLAGS=71, /* int: flags for setting up video after ACPI sleep */
- 	KERN_IA64_UNALIGNED=72, /* int: ia64 unaligned userland trap enable */
-+	KERN_VSHELPER=73,	/* string: path to vshelper policy agent */
- };
- 
+diff -NurpP --minimal linux-2.6.16.13/include/linux/sysctl.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/sysctl.h
+--- linux-2.6.16.13/include/linux/sysctl.h	2006-04-09 13:49:57 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/sysctl.h	2006-04-26 19:07:50 +0200
+@@ -93,6 +93,7 @@ enum
+ 	KERN_CAP_BSET=14,	/* int: capability bounding set */
+ 	KERN_PANIC=15,		/* int: panic timeout */
+ 	KERN_REALROOTDEV=16,	/* real root device to mount after initrd */
++	KERN_VSHELPER=17,	/* string: path to vshelper policy agent */
  
+ 	KERN_SPARC_REBOOT=21,	/* reboot command on Sparc */
+ 	KERN_CTLALTDEL=22,	/* int: allow ctl-alt-del to reboot */
 @@ -882,6 +883,9 @@ typedef int ctl_handler (ctl_table *tabl
  typedef int proc_handler (ctl_table *ctl, int write, struct file * filp,
  			  void __user *buffer, size_t *lenp, loff_t *ppos);
@@ -8861,10 +8537,9 @@
  	ctl_handler *strategy;		/* Callback function for all r/w */
  	struct proc_dir_entry *de;	/* /proc control block */
  	void *extra1;
-diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
-index 392da5a..e738d80 100644
---- a/include/linux/sysfs.h
-+++ b/include/linux/sysfs.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/sysfs.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/sysfs.h
+--- linux-2.6.16.13/include/linux/sysfs.h	2005-08-29 22:25:42 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/sysfs.h	2006-04-26 19:07:50 +0200
 @@ -12,6 +12,8 @@
  
  #include <asm/atomic.h>
@@ -8874,10 +8549,9 @@
  struct kobject;
  struct module;
  
-diff --git a/include/linux/types.h b/include/linux/types.h
-index 54ae2d5..08848a1 100644
---- a/include/linux/types.h
-+++ b/include/linux/types.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/types.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/types.h
+--- linux-2.6.16.13/include/linux/types.h	2006-02-18 14:40:35 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/types.h	2006-04-26 19:07:50 +0200
 @@ -38,6 +38,8 @@ typedef __kernel_uid32_t	uid_t;
  typedef __kernel_gid32_t	gid_t;
  typedef __kernel_uid16_t        uid16_t;
@@ -8887,11 +8561,9 @@
  
  #ifdef CONFIG_UID16
  /* This is defined by include/asm-{arch}/posix_types.h */
-diff --git a/include/linux/vroot.h b/include/linux/vroot.h
-new file mode 100644
-index 0000000..4eb6d0d
---- /dev/null
-+++ b/include/linux/vroot.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vroot.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vroot.h
+--- linux-2.6.16.13/include/linux/vroot.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vroot.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,51 @@
 +
 +/*
@@ -8944,12 +8616,10 @@
 +#define VROOT_CLR_DEV		0x5601
 +
 +#endif /* _LINUX_VROOT_H */
-diff --git a/include/linux/vs_base.h b/include/linux/vs_base.h
-new file mode 100644
-index 0000000..fa1b85e
---- /dev/null
-+++ b/include/linux/vs_base.h
-@@ -0,0 +1,103 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_base.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_base.h
+--- linux-2.6.16.13/include/linux/vs_base.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_base.h	2006-04-28 02:00:37 +0200
+@@ -0,0 +1,106 @@
 +#ifndef _VX_VS_BASE_H
 +#define _VX_VS_BASE_H
 +
@@ -9049,15 +8719,16 @@
 +	(current->vx_info && \
 +	(current->vx_info->vx_initpid == (n)))
 +
++#define vx_capable(b,c) (capable(b) || \
++	((current->euid == 0) && vx_ccaps(c)))
++
 +
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vs_context.h b/include/linux/vs_context.h
-new file mode 100644
-index 0000000..24bb245
---- /dev/null
-+++ b/include/linux/vs_context.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_context.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_context.h
+--- linux-2.6.16.13/include/linux/vs_context.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_context.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,198 @@
 +#ifndef _VX_VS_CONTEXT_H
 +#define _VX_VS_CONTEXT_H
@@ -9231,7 +8902,7 @@
 +		wake_up_interruptible(&vxi->vx_wait);
 +}
 +
-+extern void exit_vx_info(struct task_struct *);
++extern void exit_vx_info(struct task_struct *, int);
 +
 +static inline
 +struct task_struct *vx_child_reaper(struct task_struct *p)
@@ -9257,11 +8928,9 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vs_cvirt.h b/include/linux/vs_cvirt.h
-new file mode 100644
-index 0000000..0901e73
---- /dev/null
-+++ b/include/linux/vs_cvirt.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_cvirt.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_cvirt.h
+--- linux-2.6.16.13/include/linux/vs_cvirt.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_cvirt.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,108 @@
 +#ifndef _VX_VS_CVIRT_H
 +#define _VX_VS_CVIRT_H
@@ -9371,11 +9040,9 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vs_dlimit.h b/include/linux/vs_dlimit.h
-new file mode 100644
-index 0000000..674262d
---- /dev/null
-+++ b/include/linux/vs_dlimit.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_dlimit.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_dlimit.h
+--- linux-2.6.16.13/include/linux/vs_dlimit.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_dlimit.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,213 @@
 +#ifndef _VX_VS_DLIMIT_H
 +#define _VX_VS_DLIMIT_H
@@ -9590,11 +9257,9 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vs_limit.h b/include/linux/vs_limit.h
-new file mode 100644
-index 0000000..d1304bd
---- /dev/null
-+++ b/include/linux/vs_limit.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_limit.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_limit.h
+--- linux-2.6.16.13/include/linux/vs_limit.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_limit.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,107 @@
 +#ifndef _VX_VS_LIMIT_H
 +#define _VX_VS_LIMIT_H
@@ -9703,16 +9368,13 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vs_memory.h b/include/linux/vs_memory.h
-new file mode 100644
-index 0000000..b19afb0
---- /dev/null
-+++ b/include/linux/vs_memory.h
-@@ -0,0 +1,108 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_memory.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_memory.h
+--- linux-2.6.16.13/include/linux/vs_memory.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_memory.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,107 @@
 +#ifndef _VX_VS_MEMORY_H
 +#define _VX_VS_MEMORY_H
 +
-+#include <linux/config.h>
 +#include "vserver/limit.h"
 +#include "vserver/debug.h"
 +#include "vserver/limit_int.h"
@@ -9817,11 +9479,9 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vs_network.h b/include/linux/vs_network.h
-new file mode 100644
-index 0000000..28fa781
---- /dev/null
-+++ b/include/linux/vs_network.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_network.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_network.h
+--- linux-2.6.16.13/include/linux/vs_network.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_network.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,215 @@
 +#ifndef _NX_VS_NETWORK_H
 +#define _NX_VS_NETWORK_H
@@ -10038,16 +9698,13 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vs_sched.h b/include/linux/vs_sched.h
-new file mode 100644
-index 0000000..fd345f7
---- /dev/null
-+++ b/include/linux/vs_sched.h
-@@ -0,0 +1,93 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_sched.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_sched.h
+--- linux-2.6.16.13/include/linux/vs_sched.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_sched.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,92 @@
 +#ifndef _VX_VS_SCHED_H
 +#define _VX_VS_SCHED_H
 +
-+#include <linux/config.h>
 +#include "vserver/sched.h"
 +
 +
@@ -10137,11 +9794,9 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vs_socket.h b/include/linux/vs_socket.h
-new file mode 100644
-index 0000000..9173bfe
---- /dev/null
-+++ b/include/linux/vs_socket.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vs_socket.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_socket.h
+--- linux-2.6.16.13/include/linux/vs_socket.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vs_socket.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,57 @@
 +#ifndef _VX_VS_SOCKET_H
 +#define _VX_VS_SOCKET_H
@@ -10200,16 +9855,13 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff --git a/include/linux/vserver/context.h b/include/linux/vserver/context.h
-new file mode 100644
-index 0000000..24c7a93
---- /dev/null
-+++ b/include/linux/vserver/context.h
-@@ -0,0 +1,170 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/context.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/context.h
+--- linux-2.6.16.13/include/linux/vserver/context.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/context.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,172 @@
 +#ifndef _VX_CONTEXT_H
 +#define _VX_CONTEXT_H
 +
-+#include <linux/config.h>
 +#include <linux/types.h>
 +
 +
@@ -10319,13 +9971,15 @@
 +	struct task_struct *vx_reaper;		/* guest reaper process */
 +	pid_t vx_initpid;			/* PID of guest init */
 +
-+	wait_queue_head_t vx_wait;		/* context exit waitqueue */
-+
 +	struct _vx_limit limit;			/* vserver limits */
 +	struct _vx_sched sched;			/* vserver scheduler */
 +	struct _vx_cvirt cvirt;			/* virtual/bias stuff */
 +	struct _vx_cacct cacct;			/* context accounting */
 +
++	wait_queue_head_t vx_wait;		/* context exit waitqueue */
++	int reboot_cmd;				/* last sys_reboot() cmd */
++	int exit_code;				/* last process exit code */
++
 +	char vx_name[65];			/* vserver name */
 +};
 +
@@ -10336,6 +9990,7 @@
 +#define VXS_PAUSED	0x0010
 +#define VXS_ONHOLD	0x0020
 +#define VXS_SHUTDOWN	0x0100
++#define VXS_HELPER	0x1000
 +#define VXS_RELEASED	0x8000
 +
 +/* check conditions */
@@ -10376,11 +10031,9 @@
 +#else	/* _VX_CONTEXT_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_CONTEXT_H */
-diff --git a/include/linux/vserver/context_cmd.h b/include/linux/vserver/context_cmd.h
-new file mode 100644
-index 0000000..5a3195f
---- /dev/null
-+++ b/include/linux/vserver/context_cmd.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/context_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/context_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/context_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/context_cmd.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,84 @@
 +#ifndef _VX_CONTEXT_CMD_H
 +#define _VX_CONTEXT_CMD_H
@@ -10466,11 +10119,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CONTEXT_CMD_H */
-diff --git a/include/linux/vserver/cvirt.h b/include/linux/vserver/cvirt.h
-new file mode 100644
-index 0000000..204db79
---- /dev/null
-+++ b/include/linux/vserver/cvirt.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/cvirt.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/cvirt.h
+--- linux-2.6.16.13/include/linux/vserver/cvirt.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/cvirt.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,26 @@
 +#ifndef _VX_CVIRT_H
 +#define _VX_CVIRT_H
@@ -10498,11 +10149,9 @@
 +#else	/* _VX_CVIRT_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_CVIRT_H */
-diff --git a/include/linux/vserver/cvirt_cmd.h b/include/linux/vserver/cvirt_cmd.h
-new file mode 100644
-index 0000000..6720469
---- /dev/null
-+++ b/include/linux/vserver/cvirt_cmd.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/cvirt_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/cvirt_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/cvirt_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/cvirt_cmd.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,35 @@
 +#ifndef _VX_CVIRT_CMD_H
 +#define _VX_CVIRT_CMD_H
@@ -10539,16 +10188,13 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CVIRT_CMD_H */
-diff --git a/include/linux/vserver/cvirt_def.h b/include/linux/vserver/cvirt_def.h
-new file mode 100644
-index 0000000..eae2ec2
---- /dev/null
-+++ b/include/linux/vserver/cvirt_def.h
-@@ -0,0 +1,78 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/cvirt_def.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/cvirt_def.h
+--- linux-2.6.16.13/include/linux/vserver/cvirt_def.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/cvirt_def.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,77 @@
 +#ifndef _VX_CVIRT_DEF_H
 +#define _VX_CVIRT_DEF_H
 +
-+#include <linux/config.h>
 +#include <linux/jiffies.h>
 +#include <linux/utsname.h>
 +#include <linux/spinlock.h>
@@ -10623,17 +10269,13 @@
 +};
 +
 +#endif	/* _VX_CVIRT_DEF_H */
-diff --git a/include/linux/vserver/debug.h b/include/linux/vserver/debug.h
-new file mode 100644
-index 0000000..3defb65
---- /dev/null
-+++ b/include/linux/vserver/debug.h
-@@ -0,0 +1,297 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/debug.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/debug.h
+--- linux-2.6.16.13/include/linux/vserver/debug.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/debug.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,298 @@
 +#ifndef _VX_DEBUG_H
 +#define _VX_DEBUG_H
 +
-+#include <linux/config.h>
-+
 +
 +#define VXD_CBIT(n,m)	(vx_debug_ ## n & (1 << (m)))
 +#define VXD_CMIN(n,m)	(vx_debug_ ## n > (m))
@@ -10693,11 +10335,13 @@
 +			printk(VX_WARNLEVEL f "\n" , ##x);	\
 +	} while (0)
 +
-+
 +#define vxd_path(d,m)						\
 +	({ static char _buffer[PATH_MAX];			\
 +	   d_path((d), (m), _buffer, sizeof(_buffer)); })
 +
++#define vxd_cond_path(n)					\
++	((n) ? vxd_path((n)->dentry, (n)->mnt) : "<null>" )
++
 +#else	/* CONFIG_VSERVER_DEBUG */
 +
 +#define vx_debug_switch 0
@@ -10715,6 +10359,7 @@
 +#define vxwprintk(x...) do { } while (0)
 +
 +#define vxd_path	"<none>"
++#define vxd_cond_path	vxd_path
 +
 +#endif	/* CONFIG_VSERVER_DEBUG */
 +
@@ -10926,11 +10571,9 @@
 +
 +
 +#endif /* _VX_DEBUG_H */
-diff --git a/include/linux/vserver/debug_cmd.h b/include/linux/vserver/debug_cmd.h
-new file mode 100644
-index 0000000..c0cbd08
---- /dev/null
-+++ b/include/linux/vserver/debug_cmd.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/debug_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/debug_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/debug_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/debug_cmd.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,14 @@
 +#ifndef _VX_DEBUG_CMD_H
 +#define _VX_DEBUG_CMD_H
@@ -10946,11 +10589,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_DEBUG_CMD_H */
-diff --git a/include/linux/vserver/dlimit.h b/include/linux/vserver/dlimit.h
-new file mode 100644
-index 0000000..99c2240
---- /dev/null
-+++ b/include/linux/vserver/dlimit.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/dlimit.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/dlimit.h
+--- linux-2.6.16.13/include/linux/vserver/dlimit.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/dlimit.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,53 @@
 +#ifndef _VX_DLIMIT_H
 +#define _VX_DLIMIT_H
@@ -11005,17 +10646,13 @@
 +#else	/* _VX_DLIMIT_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_DLIMIT_H */
-diff --git a/include/linux/vserver/dlimit_cmd.h b/include/linux/vserver/dlimit_cmd.h
-new file mode 100644
-index 0000000..cc7f779
---- /dev/null
-+++ b/include/linux/vserver/dlimit_cmd.h
-@@ -0,0 +1,71 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/dlimit_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/dlimit_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/dlimit_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/dlimit_cmd.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,69 @@
 +#ifndef _VX_DLIMIT_CMD_H
 +#define _VX_DLIMIT_CMD_H
 +
-+#include <linux/config.h>
-+
 +
 +/*  dlimit vserver commands */
 +
@@ -11082,12 +10719,10 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_DLIMIT_CMD_H */
-diff --git a/include/linux/vserver/inode.h b/include/linux/vserver/inode.h
-new file mode 100644
-index 0000000..a6f60f5
---- /dev/null
-+++ b/include/linux/vserver/inode.h
-@@ -0,0 +1,40 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/inode.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/inode.h
+--- linux-2.6.16.13/include/linux/vserver/inode.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/inode.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,38 @@
 +#ifndef _VX_INODE_H
 +#define _VX_INODE_H
 +
@@ -11105,8 +10740,6 @@
 +
 +#ifdef	__KERNEL__
 +
-+#include <linux/config.h>
-+
 +
 +#ifdef	CONFIG_VSERVER_PROC_SECURE
 +#define IATTR_PROC_DEFAULT	( IATTR_ADMIN | IATTR_HIDE )
@@ -11128,12 +10761,10 @@
 +#else	/* _VX_INODE_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_INODE_H */
-diff --git a/include/linux/vserver/inode_cmd.h b/include/linux/vserver/inode_cmd.h
-new file mode 100644
-index 0000000..70d56a8
---- /dev/null
-+++ b/include/linux/vserver/inode_cmd.h
-@@ -0,0 +1,61 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/inode_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/inode_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/inode_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/inode_cmd.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,59 @@
 +#ifndef _VX_INODE_CMD_H
 +#define _VX_INODE_CMD_H
 +
@@ -11164,8 +10795,6 @@
 +
 +#ifdef	__KERNEL__
 +
-+#include <linux/config.h>
-+
 +
 +#ifdef	CONFIG_COMPAT
 +
@@ -11195,11 +10824,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_INODE_CMD_H */
-diff --git a/include/linux/vserver/legacy.h b/include/linux/vserver/legacy.h
-new file mode 100644
-index 0000000..41afbd9
---- /dev/null
-+++ b/include/linux/vserver/legacy.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/legacy.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/legacy.h
+--- linux-2.6.16.13/include/linux/vserver/legacy.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/legacy.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,49 @@
 +#ifndef _VX_LEGACY_H
 +#define _VX_LEGACY_H
@@ -11250,11 +10877,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LEGACY_H */
-diff --git a/include/linux/vserver/limit.h b/include/linux/vserver/limit.h
-new file mode 100644
-index 0000000..aaaee11
---- /dev/null
-+++ b/include/linux/vserver/limit.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/limit.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/limit.h
+--- linux-2.6.16.13/include/linux/vserver/limit.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/limit.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,20 @@
 +#ifndef _VX_LIMIT_H
 +#define _VX_LIMIT_H
@@ -11276,12 +10901,10 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_H */
-diff --git a/include/linux/vserver/limit_cmd.h b/include/linux/vserver/limit_cmd.h
-new file mode 100644
-index 0000000..b67a309
---- /dev/null
-+++ b/include/linux/vserver/limit_cmd.h
-@@ -0,0 +1,37 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/limit_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/limit_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/limit_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/limit_cmd.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,55 @@
 +#ifndef _VX_LIMIT_CMD_H
 +#define _VX_LIMIT_CMD_H
 +
@@ -11311,24 +10934,39 @@
 +
 +#ifdef	__KERNEL__
 +
++#ifdef	CONFIG_IA32_EMULATION
++
++struct	vcmd_ctx_rlimit_v0_x32 {
++	uint32_t id;
++	uint64_t minimum;
++	uint64_t softlimit;
++	uint64_t maximum;
++} __attribute__ ((aligned (4)));
++
++#endif	/* CONFIG_IA32_EMULATION */
++
 +#include <linux/compiler.h>
 +
 +extern int vc_get_rlimit(uint32_t, void __user *);
 +extern int vc_set_rlimit(uint32_t, void __user *);
 +extern int vc_get_rlimit_mask(uint32_t, void __user *);
 +
++#ifdef	CONFIG_IA32_EMULATION
++
++extern int vc_get_rlimit_x32(uint32_t, void __user *);
++extern int vc_set_rlimit_x32(uint32_t, void __user *);
++
++#endif	/* CONFIG_IA32_EMULATION */
++
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_CMD_H */
-diff --git a/include/linux/vserver/limit_def.h b/include/linux/vserver/limit_def.h
-new file mode 100644
-index 0000000..a154334
---- /dev/null
-+++ b/include/linux/vserver/limit_def.h
-@@ -0,0 +1,23 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/limit_def.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/limit_def.h
+--- linux-2.6.16.13/include/linux/vserver/limit_def.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/limit_def.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,22 @@
 +#ifndef _VX_LIMIT_DEF_H
 +#define _VX_LIMIT_DEF_H
 +
-+#include <linux/config.h>
 +#include <asm/atomic.h>
 +#include <asm/resource.h>
 +
@@ -11348,11 +10986,9 @@
 +
 +
 +#endif	/* _VX_LIMIT_DEF_H */
-diff --git a/include/linux/vserver/limit_int.h b/include/linux/vserver/limit_int.h
-new file mode 100644
-index 0000000..a48d242
---- /dev/null
-+++ b/include/linux/vserver/limit_int.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/limit_int.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/limit_int.h
+--- linux-2.6.16.13/include/linux/vserver/limit_int.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/limit_int.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,76 @@
 +#ifndef _VX_LIMIT_INT_H
 +#define _VX_LIMIT_INT_H
@@ -11430,11 +11066,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_H */
-diff --git a/include/linux/vserver/namespace.h b/include/linux/vserver/namespace.h
-new file mode 100644
-index 0000000..fb6cdd1
---- /dev/null
-+++ b/include/linux/vserver/namespace.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/namespace.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/namespace.h
+--- linux-2.6.16.13/include/linux/vserver/namespace.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/namespace.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,15 @@
 +#ifndef _VX_NAMESPACE_H
 +#define _VX_NAMESPACE_H
@@ -11451,11 +11085,9 @@
 +#else	/* _VX_NAMESPACE_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_NAMESPACE_H */
-diff --git a/include/linux/vserver/namespace_cmd.h b/include/linux/vserver/namespace_cmd.h
-new file mode 100644
-index 0000000..0b3239a
---- /dev/null
-+++ b/include/linux/vserver/namespace_cmd.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/namespace_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/namespace_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/namespace_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/namespace_cmd.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,19 @@
 +#ifndef _VX_NAMESPACE_CMD_H
 +#define _VX_NAMESPACE_CMD_H
@@ -11476,11 +11108,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_NAMESPACE_CMD_H */
-diff --git a/include/linux/vserver/network.h b/include/linux/vserver/network.h
-new file mode 100644
-index 0000000..1722b16
---- /dev/null
-+++ b/include/linux/vserver/network.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/network.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/network.h
+--- linux-2.6.16.13/include/linux/vserver/network.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/network.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,119 @@
 +#ifndef _VX_NETWORK_H
 +#define _VX_NETWORK_H
@@ -11601,11 +11231,9 @@
 +#else	/* _VX_NETWORK_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_NETWORK_H */
-diff --git a/include/linux/vserver/network_cmd.h b/include/linux/vserver/network_cmd.h
-new file mode 100644
-index 0000000..d9802fe
---- /dev/null
-+++ b/include/linux/vserver/network_cmd.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/network_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/network_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/network_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/network_cmd.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,89 @@
 +#ifndef _VX_NETWORK_CMD_H
 +#define _VX_NETWORK_CMD_H
@@ -11696,11 +11324,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CONTEXT_CMD_H */
-diff --git a/include/linux/vserver/sched.h b/include/linux/vserver/sched.h
-new file mode 100644
-index 0000000..2ef4b99
---- /dev/null
-+++ b/include/linux/vserver/sched.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/sched.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/sched.h
+--- linux-2.6.16.13/include/linux/vserver/sched.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/sched.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,26 @@
 +#ifndef _VX_SCHED_H
 +#define _VX_SCHED_H
@@ -11728,11 +11354,9 @@
 +#else	/* _VX_SCHED_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_SCHED_H */
-diff --git a/include/linux/vserver/sched_cmd.h b/include/linux/vserver/sched_cmd.h
-new file mode 100644
-index 0000000..b9e8ac1
---- /dev/null
-+++ b/include/linux/vserver/sched_cmd.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/sched_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/sched_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/sched_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/sched_cmd.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,48 @@
 +#ifndef _VX_SCHED_CMD_H
 +#define _VX_SCHED_CMD_H
@@ -11782,16 +11406,13 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_SCHED_CMD_H */
-diff --git a/include/linux/vserver/sched_def.h b/include/linux/vserver/sched_def.h
-new file mode 100644
-index 0000000..ee69c9b
---- /dev/null
-+++ b/include/linux/vserver/sched_def.h
-@@ -0,0 +1,39 @@
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/sched_def.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/sched_def.h
+--- linux-2.6.16.13/include/linux/vserver/sched_def.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/sched_def.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,38 @@
 +#ifndef _VX_SCHED_DEF_H
 +#define _VX_SCHED_DEF_H
 +
-+#include <linux/config.h>
 +#include <linux/spinlock.h>
 +#include <linux/jiffies.h>
 +#include <linux/cpumask.h>
@@ -11827,11 +11448,9 @@
 +};
 +
 +#endif	/* _VX_SCHED_DEF_H */
-diff --git a/include/linux/vserver/signal.h b/include/linux/vserver/signal.h
-new file mode 100644
-index 0000000..690168e
---- /dev/null
-+++ b/include/linux/vserver/signal.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/signal.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/signal.h
+--- linux-2.6.16.13/include/linux/vserver/signal.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/signal.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,14 @@
 +#ifndef _VX_SIGNAL_H
 +#define _VX_SIGNAL_H
@@ -11847,11 +11466,9 @@
 +#else	/* _VX_SIGNAL_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_SIGNAL_H */
-diff --git a/include/linux/vserver/signal_cmd.h b/include/linux/vserver/signal_cmd.h
-new file mode 100644
-index 0000000..a1c71eb
---- /dev/null
-+++ b/include/linux/vserver/signal_cmd.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/signal_cmd.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/signal_cmd.h
+--- linux-2.6.16.13/include/linux/vserver/signal_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/signal_cmd.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,26 @@
 +#ifndef _VX_SIGNAL_CMD_H
 +#define _VX_SIGNAL_CMD_H
@@ -11868,8 +11485,8 @@
 +};
 +
 +struct	vcmd_wait_exit_v0 {
-+	int32_t a;
-+	int32_t b;
++	int32_t reboot_cmd;
++	int32_t exit_code;
 +};
 +
 +#ifdef	__KERNEL__
@@ -11879,11 +11496,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_SIGNAL_CMD_H */
-diff --git a/include/linux/vserver/switch.h b/include/linux/vserver/switch.h
-new file mode 100644
-index 0000000..ddfba94
---- /dev/null
-+++ b/include/linux/vserver/switch.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/switch.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/switch.h
+--- linux-2.6.16.13/include/linux/vserver/switch.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/switch.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,98 @@
 +#ifndef _VX_SWITCH_H
 +#define _VX_SWITCH_H
@@ -11983,11 +11598,9 @@
 +#endif	/* __KERNEL__ */
 +
 +#endif	/* _VX_SWITCH_H */
-diff --git a/include/linux/vserver/xid.h b/include/linux/vserver/xid.h
-new file mode 100644
-index 0000000..2e4349e
---- /dev/null
-+++ b/include/linux/vserver/xid.h
+diff -NurpP --minimal linux-2.6.16.13/include/linux/vserver/xid.h linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/xid.h
+--- linux-2.6.16.13/include/linux/vserver/xid.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/linux/vserver/xid.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,146 @@
 +#ifndef _VX_XID_H
 +#define _VX_XID_H
@@ -12135,10 +11748,9 @@
 +void vx_propagate_xid(struct nameidata *nd, struct inode *inode);
 +
 +#endif /* _VX_XID_H */
-diff --git a/include/net/af_unix.h b/include/net/af_unix.h
-index bfc1779..9dd2fac 100644
---- a/include/net/af_unix.h
-+++ b/include/net/af_unix.h
+diff -NurpP --minimal linux-2.6.16.13/include/net/af_unix.h linux-2.6.16.13-vs2.0.2-rc19/include/net/af_unix.h
+--- linux-2.6.16.13/include/net/af_unix.h	2006-02-18 14:40:36 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/net/af_unix.h	2006-04-26 19:07:50 +0200
 @@ -17,9 +17,9 @@ extern spinlock_t unix_table_lock;
  
  extern atomic_t unix_tot_inflight;
@@ -12181,10 +11793,9 @@
  }
  
  #define forall_unix_sockets(i, s) \
-diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
-index 135d80f..1a80498 100644
---- a/include/net/inet_hashtables.h
-+++ b/include/net/inet_hashtables.h
+diff -NurpP --minimal linux-2.6.16.13/include/net/inet_hashtables.h linux-2.6.16.13-vs2.0.2-rc19/include/net/inet_hashtables.h
+--- linux-2.6.16.13/include/net/inet_hashtables.h	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/net/inet_hashtables.h	2006-04-26 19:07:50 +0200
 @@ -272,6 +272,25 @@ static inline int inet_iif(const struct 
  	return ((struct rtable *)skb->dst)->rt_iif;
  }
@@ -12220,10 +11831,9 @@
  		    (sk->sk_family == PF_INET || !ipv6_only_sock(sk)) &&
  		    !sk->sk_bound_dev_if)
  			goto sherry_cache;
-diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h
-index 883eb52..4824254 100644
---- a/include/net/inet_sock.h
-+++ b/include/net/inet_sock.h
+diff -NurpP --minimal linux-2.6.16.13/include/net/inet_sock.h linux-2.6.16.13-vs2.0.2-rc19/include/net/inet_sock.h
+--- linux-2.6.16.13/include/net/inet_sock.h	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/net/inet_sock.h	2006-04-26 19:07:50 +0200
 @@ -115,6 +115,7 @@ struct inet_sock {
  	/* Socket demultiplex comparisons on incoming packets. */
  	__u32			daddr;
@@ -12232,10 +11842,9 @@
  	__u16			dport;
  	__u16			num;
  	__u32			saddr;
-diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h
-index 1da294c..4f9f2b0 100644
---- a/include/net/inet_timewait_sock.h
-+++ b/include/net/inet_timewait_sock.h
+diff -NurpP --minimal linux-2.6.16.13/include/net/inet_timewait_sock.h linux-2.6.16.13-vs2.0.2-rc19/include/net/inet_timewait_sock.h
+--- linux-2.6.16.13/include/net/inet_timewait_sock.h	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/net/inet_timewait_sock.h	2006-04-26 19:07:50 +0200
 @@ -116,6 +116,10 @@ struct inet_timewait_sock {
  #define tw_refcnt		__tw_common.skc_refcnt
  #define tw_hash			__tw_common.skc_hash
@@ -12247,10 +11856,9 @@
  	volatile unsigned char	tw_substate;
  	/* 3 bits hole, try to pack */
  	unsigned char		tw_rcv_wscale;
-diff --git a/include/net/route.h b/include/net/route.h
-index 9c04f15..e9ba7a4 100644
---- a/include/net/route.h
-+++ b/include/net/route.h
+diff -NurpP --minimal linux-2.6.16.13/include/net/route.h linux-2.6.16.13-vs2.0.2-rc19/include/net/route.h
+--- linux-2.6.16.13/include/net/route.h	2006-02-18 14:40:36 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/include/net/route.h	2006-04-26 19:12:32 +0200
 @@ -28,11 +28,14 @@
  #include <net/dst.h>
  #include <net/inetpeer.h>
@@ -12326,7 +11934,7 @@
  static inline int ip_route_connect(struct rtable **rp, u32 dst,
  				   u32 src, u32 tos, int oif, u8 protocol,
  				   u16 sport, u16 dport, struct sock *sk)
-@@ -158,7 +214,23 @@ static inline int ip_route_connect(struc
+@@ -158,7 +214,25 @@ static inline int ip_route_connect(struc
  					 .dport = dport } } };
  
  	int err;
@@ -12346,15 +11954,16 @@
 +			return err;
 +		if (fl.fl4_dst == IPI_LOOPBACK && !vx_check(0, VX_ADMIN))
 +			fl.fl4_dst = nx_info->ipv4[0];
++		if (fl.fl4_src == IPI_LOOPBACK && !vx_check(0, VX_ADMIN))
++			fl.fl4_src = nx_info->ipv4[0];
 +	}
 +	if (!fl.fl4_dst || !fl.fl4_src) {
  		err = __ip_route_output_key(rp, &fl);
  		if (err)
  			return err;
-diff --git a/include/net/sock.h b/include/net/sock.h
-index 3075803..bcdf50d 100644
---- a/include/net/sock.h
-+++ b/include/net/sock.h
+diff -NurpP --minimal linux-2.6.16.13/include/net/sock.h linux-2.6.16.13-vs2.0.2-rc19/include/net/sock.h
+--- linux-2.6.16.13/include/net/sock.h	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/include/net/sock.h	2006-04-26 19:07:50 +0200
 @@ -115,6 +115,10 @@ struct sock_common {
  	atomic_t		skc_refcnt;
  	unsigned int		skc_hash;
@@ -12377,10 +11986,9 @@
  	unsigned char		sk_shutdown : 2,
  				sk_no_check : 2,
  				sk_userlocks : 4;
-diff --git a/ipc/mqueue.c b/ipc/mqueue.c
-index fd2e26b..6fc128e 100644
---- a/ipc/mqueue.c
-+++ b/ipc/mqueue.c
+diff -NurpP --minimal linux-2.6.16.13/ipc/mqueue.c linux-2.6.16.13-vs2.0.2-rc19/ipc/mqueue.c
+--- linux-2.6.16.13/ipc/mqueue.c	2006-02-18 14:40:37 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/ipc/mqueue.c	2006-04-26 19:07:50 +0200
 @@ -25,6 +25,8 @@
  #include <linux/netlink.h>
  #include <linux/syscalls.h>
@@ -12436,10 +12044,9 @@
  out_err:
  	dput(dentry);
  
-diff --git a/ipc/msg.c b/ipc/msg.c
-index fbf7570..10459e8 100644
---- a/ipc/msg.c
-+++ b/ipc/msg.c
+diff -NurpP --minimal linux-2.6.16.13/ipc/msg.c linux-2.6.16.13-vs2.0.2-rc19/ipc/msg.c
+--- linux-2.6.16.13/ipc/msg.c	2006-02-18 14:40:37 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/ipc/msg.c	2006-04-26 19:07:50 +0200
 @@ -100,6 +100,7 @@ static int newque (key_t key, int msgflg
  
  	msq->q_perm.mode = (msgflg & S_IRWXUGO);
@@ -12458,10 +12065,9 @@
  	return seq_printf(s,
  			  "%10d %10d  %4o  %10lu %10lu %5u %5u %5u %5u %5u %5u %10lu %10lu %10lu\n",
  			  msq->q_perm.key,
-diff --git a/ipc/sem.c b/ipc/sem.c
-index 31fd402..1a68338 100644
---- a/ipc/sem.c
-+++ b/ipc/sem.c
+diff -NurpP --minimal linux-2.6.16.13/ipc/sem.c linux-2.6.16.13-vs2.0.2-rc19/ipc/sem.c
+--- linux-2.6.16.13/ipc/sem.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/ipc/sem.c	2006-04-26 19:07:50 +0200
 @@ -179,6 +179,7 @@ static int newary (key_t key, int nsems,
  
  	sma->sem_perm.mode = (semflg & S_IRWXUGO);
@@ -12480,10 +12086,9 @@
  	return seq_printf(s,
  			  "%10d %10d  %4o %10lu %5u %5u %5u %5u %10lu %10lu\n",
  			  sma->sem_perm.key,
-diff --git a/ipc/shm.c b/ipc/shm.c
-index 9162123..918b2ff 100644
---- a/ipc/shm.c
-+++ b/ipc/shm.c
+diff -NurpP --minimal linux-2.6.16.13/ipc/shm.c linux-2.6.16.13-vs2.0.2-rc19/ipc/shm.c
+--- linux-2.6.16.13/ipc/shm.c	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/ipc/shm.c	2006-04-26 19:07:50 +0200
 @@ -30,6 +30,8 @@
  #include <linux/capability.h>
  #include <linux/ptrace.h>
@@ -12515,7 +12120,7 @@
  	ipc_rcu_putref(shp);
  }
  
-@@ -198,12 +206,15 @@ static int newseg (key_t key, int shmflg
+@@ -200,12 +208,15 @@ static int newseg (key_t key, int shmflg
  
  	if (shm_tot + numpages >= shm_ctlall)
  		return -ENOSPC;
@@ -12531,7 +12136,7 @@
  	shp->shm_perm.mode = (shmflg & S_IRWXUGO);
  	shp->mlock_user = NULL;
  
-@@ -254,6 +265,7 @@ static int newseg (key_t key, int shmflg
+@@ -256,6 +267,7 @@ static int newseg (key_t key, int shmflg
  		file->f_op = &shm_file_operations;
  
  	shm_tot += numpages;
@@ -12539,7 +12144,7 @@
  	shm_unlock(shp);
  	return shp->id;
  
-@@ -895,6 +907,9 @@ static int sysvipc_shm_proc_show(struct 
+@@ -897,6 +909,9 @@ static int sysvipc_shm_proc_show(struct 
  #define SMALL_STRING "%10d %10d  %4o %10u %5u %5u  %5d %5u %5u %5u %5u %10lu %10lu %10lu\n"
  #define BIG_STRING   "%10d %10d  %4o %21u %5u %5u  %5d %5u %5u %5u %5u %10lu %10lu %10lu\n"
  
@@ -12549,10 +12154,9 @@
  	if (sizeof(size_t) <= sizeof(int))
  		format = SMALL_STRING;
  	else
-diff --git a/ipc/util.c b/ipc/util.c
-index 8626219..9de6620 100644
---- a/ipc/util.c
-+++ b/ipc/util.c
+diff -NurpP --minimal linux-2.6.16.13/ipc/util.c linux-2.6.16.13-vs2.0.2-rc19/ipc/util.c
+--- linux-2.6.16.13/ipc/util.c	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/ipc/util.c	2006-04-26 19:07:50 +0200
 @@ -154,7 +154,9 @@ int ipc_findkey(struct ipc_ids* ids, key
  	 */
  	for (id = 0; id <= max_id; id++) {
@@ -12564,7 +12168,7 @@
  			continue;
  		if (key == p->key)
  			return id;
-@@ -468,6 +470,8 @@ int ipcperms (struct kern_ipc_perm *ipcp
+@@ -467,6 +469,8 @@ int ipcperms (struct kern_ipc_perm *ipcp
  {	/* flag will most probably be 0 or S_...UGO from <linux/stat.h> */
  	int requested_mode, granted_mode;
  
@@ -12573,10 +12177,9 @@
  	requested_mode = (flag >> 6) | (flag >> 3) | flag;
  	granted_mode = ipcp->mode;
  	if (current->euid == ipcp->cuid || current->euid == ipcp->uid)
-diff --git a/kernel/Makefile b/kernel/Makefile
-index 4ae0fbd..2d89af0 100644
---- a/kernel/Makefile
-+++ b/kernel/Makefile
+diff -NurpP --minimal linux-2.6.16.13/kernel/Makefile linux-2.6.16.13-vs2.0.2-rc19/kernel/Makefile
+--- linux-2.6.16.13/kernel/Makefile	2006-02-18 14:40:37 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/Makefile	2006-04-26 19:07:50 +0200
 @@ -10,6 +10,8 @@ obj-y     = sched.o fork.o exec_domain.o
  	    kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
  	    hrtimer.o
@@ -12586,10 +12189,9 @@
  obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
  obj-$(CONFIG_FUTEX) += futex.o
  obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
-diff --git a/kernel/capability.c b/kernel/capability.c
-index bfa3c92..08e5fe7 100644
---- a/kernel/capability.c
-+++ b/kernel/capability.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/capability.c linux-2.6.16.13-vs2.0.2-rc19/kernel/capability.c
+--- linux-2.6.16.13/kernel/capability.c	2006-02-18 14:40:37 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/capability.c	2006-04-26 19:07:50 +0200
 @@ -12,6 +12,7 @@
  #include <linux/module.h>
  #include <linux/security.h>
@@ -12598,10 +12200,9 @@
  #include <asm/uaccess.h>
  
  unsigned securebits = SECUREBITS_DEFAULT; /* systemwide security settings */
-diff --git a/kernel/cpuset.c b/kernel/cpuset.c
-index 12815d3..b6c29ae 100644
---- a/kernel/cpuset.c
-+++ b/kernel/cpuset.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/cpuset.c linux-2.6.16.13-vs2.0.2-rc19/kernel/cpuset.c
+--- linux-2.6.16.13/kernel/cpuset.c	2006-02-18 14:40:37 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/cpuset.c	2006-04-26 19:07:50 +0200
 @@ -50,6 +50,7 @@
  #include <linux/time.h>
  #include <linux/backing-dev.h>
@@ -12610,10 +12211,9 @@
  
  #include <asm/uaccess.h>
  #include <asm/atomic.h>
-diff --git a/kernel/exit.c b/kernel/exit.c
-index 531aadc..7428f48 100644
---- a/kernel/exit.c
-+++ b/kernel/exit.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/exit.c linux-2.6.16.13-vs2.0.2-rc19/kernel/exit.c
+--- linux-2.6.16.13/kernel/exit.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/exit.c	2006-05-03 15:50:25 +0200
 @@ -31,6 +31,10 @@
  #include <linux/signal.h>
  #include <linux/cn_proc.h>
@@ -12625,15 +12225,7 @@
  
  #include <asm/uaccess.h>
  #include <asm/unistd.h>
-@@ -237,6 +241,7 @@ static void reparent_to_init(void)
- 	ptrace_unlink(current);
- 	/* Reparent to init */
- 	REMOVE_LINKS(current);
-+	/* FIXME: handle vchild_reaper/initpid */
- 	current->parent = child_reaper;
- 	current->real_parent = child_reaper;
- 	SET_LINKS(current);
-@@ -396,6 +401,7 @@ static void close_files(struct files_str
+@@ -396,6 +400,7 @@ static void close_files(struct files_str
  				struct file * file = xchg(&fdt->fd[i], NULL);
  				if (file)
  					filp_close(file, files);
@@ -12641,20 +12233,22 @@
  			}
  			i++;
  			set >>= 1;
-@@ -536,7 +542,7 @@ static void exit_mm(struct task_struct *
+@@ -536,8 +541,13 @@ static void exit_mm(struct task_struct *
  	mmput(mm);
  }
  
 -static inline void choose_new_parent(task_t *p, task_t *reaper, task_t *child_reaper)
 +static inline void choose_new_parent(task_t *p, task_t *reaper)
  {
++	/* check for reaper context */
++	vxwprintk((p->xid != reaper->xid) && (reaper != child_reaper),
++		"rogue reaper: %p[%d,#%u] <> %p[%d,#%u]",
++		p, p->pid, p->xid, reaper, reaper->pid, reaper->xid);
++
  	/*
  	 * Make sure we're not reparenting to ourselves and that
-@@ -616,10 +622,11 @@ static void forget_original_parent(struc
- 	struct task_struct *p, *reaper = father;
- 	struct list_head *_p, *_n;
- 
-+	/* FIXME: handle vchild_reaper/initpid */
+ 	 * the parent is not a zombie.
+@@ -619,7 +629,7 @@ static void forget_original_parent(struc
  	do {
  		reaper = next_thread(reaper);
  		if (reaper == father) {
@@ -12663,7 +12257,7 @@
  			break;
  		}
  	} while (reaper->exit_state);
-@@ -643,7 +650,7 @@ static void forget_original_parent(struc
+@@ -643,7 +653,7 @@ static void forget_original_parent(struc
  
  		if (father == p->real_parent) {
  			/* reparent with a reaper, real father it's us */
@@ -12672,15 +12266,12 @@
  			reparent_thread(p, father, 0);
  		} else {
  			/* reparent ptraced task to its real parent */
-@@ -664,7 +671,11 @@ static void forget_original_parent(struc
+@@ -664,7 +674,8 @@ static void forget_original_parent(struc
  	}
  	list_for_each_safe(_p, _n, &father->ptrace_children) {
  		p = list_entry(_p,struct task_struct,ptrace_list);
 -		choose_new_parent(p, reaper, child_reaper);
 +
-+		/* check for reaper context */
-+		BUG_ON(p->xid != reaper->xid);
-+
 +		choose_new_parent(p, reaper);
  		reparent_thread(p, father, 1);
  	}
@@ -12689,15 +12280,14 @@
  	__exit_files(tsk);
  	__exit_fs(tsk);
  	exit_namespace(tsk);
-+	exit_vx_info(tsk);
++	exit_vx_info(tsk, code);
 +	exit_nx_info(tsk);
  	exit_thread();
  	cpuset_exit(tsk);
  	exit_keys(tsk);
-diff --git a/kernel/fork.c b/kernel/fork.c
-index a8eab86..c6a2ba4 100644
---- a/kernel/fork.c
-+++ b/kernel/fork.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/fork.c linux-2.6.16.13-vs2.0.2-rc19/kernel/fork.c
+--- linux-2.6.16.13/kernel/fork.c	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/fork.c	2006-04-26 19:07:50 +0200
 @@ -44,6 +44,10 @@
  #include <linux/rmap.h>
  #include <linux/acct.h>
@@ -12827,7 +12417,7 @@
  	}
  
  	atomic_inc(&p->user->__count);
-@@ -1190,6 +1222,18 @@ static task_t *copy_process(unsigned lon
+@@ -1196,6 +1228,18 @@ static task_t *copy_process(unsigned lon
  	nr_threads++;
  	total_forks++;
  	spin_unlock(&current->sighand->siglock);
@@ -12846,7 +12436,7 @@
  	write_unlock_irq(&tasklist_lock);
  	proc_fork_connector(p);
  	return p;
-@@ -1230,6 +1274,9 @@ bad_fork_cleanup_count:
+@@ -1236,6 +1280,9 @@ bad_fork_cleanup_count:
  	put_group_info(p->group_info);
  	atomic_dec(&p->user->processes);
  	free_uid(p->user);
@@ -12856,10 +12446,9 @@
  bad_fork_free:
  	free_task(p);
  fork_out:
-diff --git a/kernel/kthread.c b/kernel/kthread.c
-index e75950a..c848b20 100644
---- a/kernel/kthread.c
-+++ b/kernel/kthread.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/kthread.c linux-2.6.16.13-vs2.0.2-rc19/kernel/kthread.c
+--- linux-2.6.16.13/kernel/kthread.c	2006-01-03 17:30:12 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/kthread.c	2006-04-26 19:07:50 +0200
 @@ -114,7 +114,7 @@ static void keventd_create_kthread(void 
  		create->result = ERR_PTR(pid);
  	} else {
@@ -12869,10 +12458,9 @@
  	}
  	complete(&create->done);
  }
-diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
-index 520f6c5..96d7046 100644
---- a/kernel/posix-cpu-timers.c
-+++ b/kernel/posix-cpu-timers.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/posix-cpu-timers.c linux-2.6.16.13-vs2.0.2-rc19/kernel/posix-cpu-timers.c
+--- linux-2.6.16.13/kernel/posix-cpu-timers.c	2006-02-18 14:40:37 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/posix-cpu-timers.c	2006-04-26 19:07:50 +0200
 @@ -6,6 +6,7 @@
  #include <linux/posix-timers.h>
  #include <asm/uaccess.h>
@@ -12881,19 +12469,10 @@
  
  static int check_clock(const clockid_t which_clock)
  {
-diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
-index 216f574..33e4b92 100644
---- a/kernel/posix-timers.c
-+++ b/kernel/posix-timers.c
-@@ -47,6 +47,7 @@
- #include <linux/wait.h>
- #include <linux/workqueue.h>
- #include <linux/module.h>
-+#include <linux/vs_cvirt.h>
- 
- /*
-  * Management arrays for POSIX timers.	 Timers are kept in slab memory
-@@ -306,9 +307,10 @@ int posix_timer_event(struct k_itimer *t
+diff -NurpP --minimal linux-2.6.16.13/kernel/posix-timers.c linux-2.6.16.13-vs2.0.2-rc19/kernel/posix-timers.c
+--- linux-2.6.16.13/kernel/posix-timers.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/posix-timers.c	2006-04-28 04:47:02 +0200
+@@ -306,9 +306,10 @@ int posix_timer_event(struct k_itimer *t
  
  	if (timr->it_sigev_notify & SIGEV_THREAD_ID) {
  		struct task_struct *leader;
@@ -12906,7 +12485,7 @@
  		if (likely(ret >= 0))
  			return ret;
  
-@@ -365,7 +367,7 @@ static struct task_struct * good_sigeven
+@@ -366,7 +367,7 @@ static struct task_struct * good_sigeven
  	struct task_struct *rtn = current->group_leader;
  
  	if ((event->sigev_notify & SIGEV_THREAD_ID ) &&
@@ -12915,10 +12494,9 @@
  		 rtn->tgid != current->tgid ||
  		 (event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_SIGNAL))
  		return NULL;
-diff --git a/kernel/printk.c b/kernel/printk.c
-index 13ced0f..bbff973 100644
---- a/kernel/printk.c
-+++ b/kernel/printk.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/printk.c linux-2.6.16.13-vs2.0.2-rc19/kernel/printk.c
+--- linux-2.6.16.13/kernel/printk.c	2006-02-18 14:40:37 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/printk.c	2006-04-26 19:07:50 +0200
 @@ -31,6 +31,7 @@
  #include <linux/security.h>
  #include <linux/bootmem.h>
@@ -12982,10 +12560,9 @@
  		count = len;
  		if (count > log_buf_len)
  			count = log_buf_len;
-diff --git a/kernel/ptrace.c b/kernel/ptrace.c
-index d95a72c..220f567 100644
---- a/kernel/ptrace.c
-+++ b/kernel/ptrace.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/ptrace.c linux-2.6.16.13-vs2.0.2-rc19/kernel/ptrace.c
+--- linux-2.6.16.13/kernel/ptrace.c	2006-05-03 16:59:01 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/ptrace.c	2006-04-26 19:07:50 +0200
 @@ -18,6 +18,7 @@
  #include <linux/ptrace.h>
  #include <linux/security.h>
@@ -12994,7 +12571,7 @@
  
  #include <asm/pgtable.h>
  #include <asm/uaccess.h>
-@@ -489,6 +490,10 @@ asmlinkage long sys_ptrace(long request,
+@@ -486,6 +487,10 @@ asmlinkage long sys_ptrace(long request,
  		goto out;
  	}
  
@@ -13005,10 +12582,9 @@
  	if (request == PTRACE_ATTACH) {
  		ret = ptrace_attach(child);
  		goto out_put_task_struct;
-diff --git a/kernel/sched.c b/kernel/sched.c
-index 4d46e90..545c80b 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/sched.c linux-2.6.16.13-vs2.0.2-rc19/kernel/sched.c
+--- linux-2.6.16.13/kernel/sched.c	2006-05-03 16:59:02 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/sched.c	2006-04-26 19:07:50 +0200
 @@ -52,6 +52,9 @@
  #include <asm/tlb.h>
  
@@ -13019,7 +12595,7 @@
  
  /*
   * Convert user-nice values [ -20 ... 0 ... 19 ]
-@@ -238,6 +241,10 @@
+@@ -239,6 +242,10 @@ struct runqueue {
  	struct list_head migration_queue;
  	int cpu;
  #endif
@@ -13030,7 +12606,7 @@
  
  #ifdef CONFIG_SCHEDSTATS
  	/* latency stats */
-@@ -598,6 +605,7 @@ static inline void sched_info_switch(tas
+@@ -599,6 +606,7 @@ static inline void sched_info_switch(tas
   */
  static void dequeue_task(struct task_struct *p, prio_array_t *array)
  {
@@ -13038,7 +12614,7 @@
  	array->nr_active--;
  	list_del(&p->run_list);
  	if (list_empty(array->queue + p->prio))
-@@ -606,6 +614,7 @@ static void dequeue_task(struct task_str
+@@ -607,6 +615,7 @@ static void dequeue_task(struct task_str
  
  static void enqueue_task(struct task_struct *p, prio_array_t *array)
  {
@@ -13046,7 +12622,7 @@
  	sched_info_queued(p);
  	list_add_tail(&p->run_list, array->queue + p->prio);
  	__set_bit(p->prio, array->bitmap);
-@@ -619,11 +628,13 @@ static void enqueue_task(struct task_str
+@@ -620,11 +629,13 @@ static void enqueue_task(struct task_str
   */
  static void requeue_task(struct task_struct *p, prio_array_t *array)
  {
@@ -13060,7 +12636,7 @@
  	list_add(&p->run_list, array->queue + p->prio);
  	__set_bit(p->prio, array->bitmap);
  	array->nr_active++;
-@@ -647,6 +658,7 @@ static inline void enqueue_task_head(str
+@@ -648,6 +659,7 @@ static inline void enqueue_task_head(str
  static int effective_prio(task_t *p)
  {
  	int bonus, prio;
@@ -13068,7 +12644,7 @@
  
  	if (rt_task(p))
  		return p->prio;
-@@ -654,6 +666,11 @@ static int effective_prio(task_t *p)
+@@ -655,6 +667,11 @@ static int effective_prio(task_t *p)
  	bonus = CURRENT_BONUS(p) - MAX_BONUS / 2;
  
  	prio = p->static_prio - bonus;
@@ -13080,7 +12656,7 @@
  	if (prio < MAX_RT_PRIO)
  		prio = MAX_RT_PRIO;
  	if (prio > MAX_PRIO-1)
-@@ -792,19 +809,77 @@ static void activate_task(task_t *p, run
+@@ -793,19 +810,77 @@ static void activate_task(task_t *p, run
  	}
  	p->timestamp = now;
  
@@ -13159,7 +12735,7 @@
  /*
   * resched_task - mark a task 'to be rescheduled now'.
   *
-@@ -1168,6 +1243,12 @@ static int try_to_wake_up(task_t *p, uns
+@@ -1169,6 +1244,12 @@ static int try_to_wake_up(task_t *p, uns
  
  	rq = task_rq_lock(p, &flags);
  	old_state = p->state;
@@ -13172,7 +12748,7 @@
  	if (!(old_state & state))
  		goto out;
  
-@@ -1284,10 +1365,16 @@ out_activate:
+@@ -1285,10 +1366,16 @@ out_activate:
  	 * sleep is handled in a priority-neutral manner, no priority
  	 * boost and no penalty.)
  	 */
@@ -13191,7 +12767,7 @@
  	/*
  	 * Sync wakeups (i.e. those types of wakeups where the waker
  	 * has indicated that it will leave the CPU in short order)
-@@ -1411,6 +1498,7 @@ void fastcall wake_up_new_task(task_t *p
+@@ -1412,6 +1499,7 @@ void fastcall wake_up_new_task(task_t *p
  
  	p->prio = effective_prio(p);
  
@@ -13199,7 +12775,7 @@
  	if (likely(cpu == this_cpu)) {
  		if (!(clone_flags & CLONE_VM)) {
  			/*
-@@ -1422,6 +1510,7 @@ void fastcall wake_up_new_task(task_t *p
+@@ -1423,6 +1511,7 @@ void fastcall wake_up_new_task(task_t *p
  				__activate_task(p, rq);
  			else {
  				p->prio = current->prio;
@@ -13207,7 +12783,7 @@
  				list_add_tail(&p->run_list, &current->run_list);
  				p->array = current->array;
  				p->array->nr_active++;
-@@ -2485,13 +2574,16 @@ unsigned long long current_sched_time(co
+@@ -2489,13 +2578,16 @@ unsigned long long current_sched_time(co
  void account_user_time(struct task_struct *p, cputime_t cputime)
  {
  	struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
@@ -13225,7 +12801,7 @@
  		cpustat->nice = cputime64_add(cpustat->nice, tmp);
  	else
  		cpustat->user = cputime64_add(cpustat->user, tmp);
-@@ -2507,10 +2599,12 @@ void account_system_time(struct task_str
+@@ -2511,10 +2603,12 @@ void account_system_time(struct task_str
  			 cputime_t cputime)
  {
  	struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
@@ -13238,7 +12814,7 @@
  
  	/* Add system time to cpustat. */
  	tmp = cputime_to_cputime64(cputime);
-@@ -2570,6 +2664,10 @@ void scheduler_tick(void)
+@@ -2574,6 +2668,10 @@ void scheduler_tick(void)
  	if (p == rq->idle) {
  		if (wake_priority_sleeper(rq))
  			goto out;
@@ -13249,7 +12825,7 @@
  		rebalance_tick(cpu, rq, SCHED_IDLE);
  		return;
  	}
-@@ -2602,7 +2700,7 @@ void scheduler_tick(void)
+@@ -2606,7 +2704,7 @@ void scheduler_tick(void)
  		}
  		goto out_unlock;
  	}
@@ -13258,7 +12834,7 @@
  		dequeue_task(p, rq->active);
  		set_tsk_need_resched(p);
  		p->prio = effective_prio(p);
-@@ -2867,6 +2965,10 @@ asmlinkage void __sched schedule(void)
+@@ -2871,6 +2969,10 @@ asmlinkage void __sched schedule(void)
  	unsigned long long now;
  	unsigned long run_time;
  	int cpu, idx, new_prio;
@@ -13269,7 +12845,7 @@
  
  	/*
  	 * Test if we are atomic.  Since do_exit() needs to call into
-@@ -2926,12 +3028,41 @@ need_resched_nonpreemptible:
+@@ -2930,12 +3032,41 @@ need_resched_nonpreemptible:
  				unlikely(signal_pending(prev))))
  			prev->state = TASK_RUNNING;
  		else {
@@ -13312,7 +12888,7 @@
  	cpu = smp_processor_id();
  	if (unlikely(!rq->nr_running)) {
  go_idle:
-@@ -2979,6 +3110,22 @@ go_idle:
+@@ -2983,6 +3114,22 @@ go_idle:
  	queue = array->queue + idx;
  	next = list_entry(queue->next, task_t, run_list);
  
@@ -13335,7 +12911,7 @@
  	if (!rt_task(next) && next->activated > 0) {
  		unsigned long long delta = now - next->timestamp;
  		if (unlikely((long long)(now - next->timestamp) < 0))
-@@ -3534,7 +3681,7 @@ asmlinkage long sys_nice(int increment)
+@@ -3538,7 +3685,7 @@ asmlinkage long sys_nice(int increment)
  		nice = 19;
  
  	if (increment < 0 && !can_nice(current, nice))
@@ -13344,7 +12920,7 @@
  
  	retval = security_task_setnice(current, nice);
  	if (retval)
-@@ -3694,6 +3841,7 @@ recheck:
+@@ -3698,6 +3845,7 @@ recheck:
  	oldprio = p->prio;
  	__setscheduler(p, policy, param->sched_priority);
  	if (array) {
@@ -13352,8 +12928,8 @@
  		__activate_task(p, rq);
  		/*
  		 * Reschedule if we are currently running on this runqueue and
-@@ -6037,6 +6185,9 @@ void __init sched_init(void)
- 		INIT_LIST_HEAD(&rq->migration_queue);
+@@ -6042,6 +6190,9 @@ void __init sched_init(void)
+ 		rq->cpu = i;
  #endif
  		atomic_set(&rq->nr_iowait, 0);
 +#ifdef CONFIG_VSERVER_HARDCPU
@@ -13362,7 +12938,7 @@
  
  		for (j = 0; j < 2; j++) {
  			array = rq->arrays + j;
-@@ -6106,6 +6257,7 @@ void normalize_rt_tasks(void)
+@@ -6111,6 +6262,7 @@ void normalize_rt_tasks(void)
  			deactivate_task(p, task_rq(p));
  		__setscheduler(p, SCHED_NORMAL, 0);
  		if (array) {
@@ -13370,10 +12946,9 @@
  			__activate_task(p, task_rq(p));
  			resched_task(rq->curr);
  		}
-diff --git a/kernel/signal.c b/kernel/signal.c
-index ea15410..4f5185f 100644
---- a/kernel/signal.c
-+++ b/kernel/signal.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/signal.c linux-2.6.16.13-vs2.0.2-rc19/kernel/signal.c
+--- linux-2.6.16.13/kernel/signal.c	2006-05-03 16:59:02 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/signal.c	2006-04-26 19:07:50 +0200
 @@ -26,6 +26,7 @@
  #include <linux/signal.h>
  #include <linux/audit.h>
@@ -13424,10 +12999,9 @@
  		if (sig_kernel_stop(signr)) {
  			/*
  			 * The default action is to stop all threads in
-diff --git a/kernel/sys.c b/kernel/sys.c
-index f91218a..6084bf4 100644
---- a/kernel/sys.c
-+++ b/kernel/sys.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/sys.c linux-2.6.16.13-vs2.0.2-rc19/kernel/sys.c
+--- linux-2.6.16.13/kernel/sys.c	2006-05-03 16:59:02 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/sys.c	2006-04-29 02:00:39 +0200
 @@ -11,6 +11,7 @@
  #include <linux/mman.h>
  #include <linux/smp_lock.h>
@@ -13490,7 +13064,7 @@
  }
  EXPORT_SYMBOL_GPL(kernel_power_off);
 +
-+long vs_reboot(unsigned int, void *);
++long vs_reboot(unsigned int, void __user *);
 +
  /*
   * Reboot system call: for obvious reasons only root may call it,
@@ -13595,7 +13169,7 @@
  	char tmp[__NEW_UTS_LEN];
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SET_UTSNAME))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_SET_UTSNAME))
  		return -EPERM;
  	if (len < 0 || len > __NEW_UTS_LEN)
  		return -EINVAL;
@@ -13636,7 +13210,7 @@
  	char tmp[__NEW_UTS_LEN];
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SET_UTSNAME))
++	if (!vx_capable(CAP_SYS_ADMIN, VXC_SET_UTSNAME))
  		return -EPERM;
  	if (len < 0 || len > __NEW_UTS_LEN)
  		return -EINVAL;
@@ -13658,14 +13232,13 @@
  	old_rlim = current->signal->rlim + resource;
  	if ((new_rlim.rlim_max > old_rlim->rlim_max) &&
 -	    !capable(CAP_SYS_RESOURCE))
-+	    !capable(CAP_SYS_RESOURCE) && !vx_ccaps(VXC_SET_RLIMIT))
++	    !vx_capable(CAP_SYS_RESOURCE, VXC_SET_RLIMIT))
  		return -EPERM;
  	if (resource == RLIMIT_NOFILE && new_rlim.rlim_max > NR_OPEN)
  			return -EPERM;
-diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index 32b48e8..f81b394 100644
---- a/kernel/sysctl.c
-+++ b/kernel/sysctl.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/sysctl.c linux-2.6.16.13-vs2.0.2-rc19/kernel/sysctl.c
+--- linux-2.6.16.13/kernel/sysctl.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/sysctl.c	2006-04-26 19:07:50 +0200
 @@ -46,6 +46,7 @@
  #include <linux/syscalls.h>
  #include <linux/nfs_fs.h>
@@ -13795,10 +13368,9 @@
  				return -EFAULT;
  		if (len < *lenp) {
  			if(put_user('\n', ((char __user *) buffer) + len))
-diff --git a/kernel/timer.c b/kernel/timer.c
-index bf7c419..a709b8a 100644
---- a/kernel/timer.c
-+++ b/kernel/timer.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/timer.c linux-2.6.16.13-vs2.0.2-rc19/kernel/timer.c
+--- linux-2.6.16.13/kernel/timer.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/timer.c	2006-04-26 19:07:50 +0200
 @@ -34,6 +34,8 @@
  #include <linux/cpu.h>
  #include <linux/syscalls.h>
@@ -13836,8 +13408,8 @@
  	}
 -	return pid;
 +	return vx_map_pid(pid);
- }
- 
++}
++
 +#ifdef __alpha__
 +
 +/*
@@ -13848,8 +13420,8 @@
 +{
 +	*ppid = sys_getppid();
 +	return sys_getpid();
-+}
-+
+ }
+ 
 +#else /* _alpha_ */
 +
  asmlinkage long sys_getuid(void)
@@ -13864,10 +13436,9 @@
  		val.uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0);
  
  		val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
-diff --git a/kernel/user.c b/kernel/user.c
-index d9deae4..155084e 100644
---- a/kernel/user.c
-+++ b/kernel/user.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/user.c linux-2.6.16.13-vs2.0.2-rc19/kernel/user.c
+--- linux-2.6.16.13/kernel/user.c	2006-02-18 14:40:38 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/user.c	2006-04-26 19:07:50 +0200
 @@ -23,8 +23,8 @@
  #define UIDHASH_BITS (CONFIG_BASE_SMALL ? 3 : 8)
  #define UIDHASH_SZ		(1 << UIDHASH_BITS)
@@ -13956,31 +13527,14 @@
  	spin_unlock_irq(&uidhash_lock);
  
  	return 0;
-diff --git a/kernel/vserver/Kconfig b/kernel/vserver/Kconfig
-new file mode 100644
-index 0000000..2658bc7
---- /dev/null
-+++ b/kernel/vserver/Kconfig
-@@ -0,0 +1,179 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/Kconfig linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/Kconfig
+--- linux-2.6.16.13/kernel/vserver/Kconfig	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/Kconfig	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,180 @@
 +#
 +# Linux VServer configuration
 +#
 +
-+config	VSERVER
-+	bool
-+	default y
-+
-+config	VSERVER_SECURITY
-+	bool
-+	depends on SECURITY
-+	default y
-+	select SECURITY_CAPABILITIES
-+
-+config	VSERVER_LEGACYNET
-+	bool
-+	depends on !VSERVER_NGNET
-+	default y
-+
 +menu "Linux VServer"
 +
 +config	VSERVER_LEGACY
@@ -14141,11 +13695,25 @@
 +
 +endmenu
 +
-diff --git a/kernel/vserver/Makefile b/kernel/vserver/Makefile
-new file mode 100644
-index 0000000..19cd988
---- /dev/null
-+++ b/kernel/vserver/Makefile
++
++config	VSERVER
++	bool
++	default y
++
++config	VSERVER_SECURITY
++	bool
++	depends on SECURITY
++	default y
++	select SECURITY_CAPABILITIES
++
++config	VSERVER_LEGACYNET
++	bool
++	depends on !VSERVER_NGNET
++	default y
++
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/Makefile linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/Makefile
+--- linux-2.6.16.13/kernel/vserver/Makefile	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/Makefile	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,16 @@
 +#
 +# Makefile for the Linux vserver routines.
@@ -14163,12 +13731,10 @@
 +vserver-$(CONFIG_VSERVER_LEGACYNET) += legacynet.o
 +vserver-$(CONFIG_VSERVER_HISTORY) += history.o
 +
-diff --git a/kernel/vserver/context.c b/kernel/vserver/context.c
-new file mode 100644
-index 0000000..3542996
---- /dev/null
-+++ b/kernel/vserver/context.c
-@@ -0,0 +1,889 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/context.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/context.c
+--- linux-2.6.16.13/kernel/vserver/context.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/context.c	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,893 @@
 +/*
 + *  linux/kernel/vserver/context.c
 + *
@@ -14190,7 +13756,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/slab.h>
 +#include <linux/types.h>
 +#include <linux/namespace.h>
@@ -14253,6 +13818,9 @@
 +	new->vx_bcaps = CAP_INIT_EFF_SET;
 +	new->vx_ccaps = 0;
 +
++	new->reboot_cmd = 0;
++	new->exit_code = 0;
++
 +	vxdprintk(VXD_CBIT(xid, 0),
 +		"alloc_vx_info(%d) = %p", xid, new);
 +	vxh_alloc_vx_info(new);
@@ -14788,12 +14356,13 @@
 +	return 0;
 +}
 +
-+void vx_exit_init(struct vx_info *vxi, struct task_struct *p)
++void vx_exit_init(struct vx_info *vxi, struct task_struct *p, int code)
 +{
 +	vxdprintk(VXD_CBIT(xid, 6),
 +		"vx_exit_init(%p[#%d],%p[#%d,%d,%d])",
 +		vxi, vxi->vx_id, p, p->xid, p->pid, p->tgid);
 +
++	vxi->exit_code = code;
 +	vxi->vx_initpid = 0;
 +}
 +
@@ -14814,7 +14383,7 @@
 +
 +/*	task must be current or locked		*/
 +
-+void	exit_vx_info(struct task_struct *p)
++void	exit_vx_info(struct task_struct *p, int code)
 +{
 +	struct vx_info *vxi = p->vx_info;
 +
@@ -14822,8 +14391,9 @@
 +		atomic_dec(&vxi->cvirt.nr_threads);
 +		vx_nproc_dec(p);
 +
++		vxi->exit_code = code;
 +		if (vxi->vx_initpid == p->tgid)
-+			vx_exit_init(vxi, p);
++			vx_exit_init(vxi, p, code);
 +		if (vxi->vx_reaper == p)
 +			vx_set_reaper(vxi, child_reaper);
 +		release_vx_info(vxi, p);
@@ -15058,11 +14628,9 @@
 +
 +EXPORT_SYMBOL_GPL(free_vx_info);
 +
-diff --git a/kernel/vserver/cvirt.c b/kernel/vserver/cvirt.c
-new file mode 100644
-index 0000000..4805303
---- /dev/null
-+++ b/kernel/vserver/cvirt.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/cvirt.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/cvirt.c
+--- linux-2.6.16.13/kernel/vserver/cvirt.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/cvirt.c	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,259 @@
 +/*
 + *  linux/kernel/vserver/cvirt.c
@@ -15323,14 +14891,10 @@
 +	put_vx_info(vxi);
 +	return (name ? 0 : -EFAULT);
 +}
-diff --git a/kernel/vserver/cvirt_init.h b/kernel/vserver/cvirt_init.h
-new file mode 100644
-index 0000000..d2e6d47
---- /dev/null
-+++ b/kernel/vserver/cvirt_init.h
-@@ -0,0 +1,83 @@
-+
-+#include <linux/config.h>
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/cvirt_init.h linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/cvirt_init.h
+--- linux-2.6.16.13/kernel/vserver/cvirt_init.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/cvirt_init.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,81 @@
 +
 +
 +#include <linux/config.h>
@@ -15412,11 +14976,9 @@
 +	return;
 +}
 +
-diff --git a/kernel/vserver/cvirt_proc.h b/kernel/vserver/cvirt_proc.h
-new file mode 100644
-index 0000000..9143c2d
---- /dev/null
-+++ b/kernel/vserver/cvirt_proc.h
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/cvirt_proc.h linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/cvirt_proc.h
+--- linux-2.6.16.13/kernel/vserver/cvirt_proc.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/cvirt_proc.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,92 @@
 +#ifndef _VX_CVIRT_PROC_H
 +#define _VX_CVIRT_PROC_H
@@ -15510,12 +15072,10 @@
 +}
 +
 +#endif	/* _VX_CVIRT_PROC_H */
-diff --git a/kernel/vserver/dlimit.c b/kernel/vserver/dlimit.c
-new file mode 100644
-index 0000000..6978817
---- /dev/null
-+++ b/kernel/vserver/dlimit.c
-@@ -0,0 +1,552 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/dlimit.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/dlimit.c
+--- linux-2.6.16.13/kernel/vserver/dlimit.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/dlimit.c	2006-04-29 02:00:39 +0200
+@@ -0,0 +1,551 @@
 +/*
 + *  linux/kernel/vserver/dlimit.c
 + *
@@ -15528,7 +15088,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/fs.h>
 +#include <linux/namespace.h>
 +#include <linux/namei.h>
@@ -15701,7 +15260,7 @@
 +
 +
 +
-+int do_addrem_dlimit(uint32_t id, const char __user *name,
++static int do_addrem_dlimit(uint32_t id, const char __user *name,
 +	uint32_t flags, int add)
 +{
 +	struct nameidata nd;
@@ -16068,12 +15627,10 @@
 +EXPORT_SYMBOL_GPL(locate_dl_info);
 +EXPORT_SYMBOL_GPL(rcu_free_dl_info);
 +
-diff --git a/kernel/vserver/helper.c b/kernel/vserver/helper.c
-new file mode 100644
-index 0000000..d9a38be
---- /dev/null
-+++ b/kernel/vserver/helper.c
-@@ -0,0 +1,200 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/helper.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/helper.c
+--- linux-2.6.16.13/kernel/vserver/helper.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/helper.c	2006-04-29 02:00:39 +0200
+@@ -0,0 +1,210 @@
 +/*
 + *  linux/kernel/vserver/helper.c
 + *
@@ -16085,7 +15642,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/errno.h>
 +#include <linux/kmod.h>
 +#include <linux/sched.h>
@@ -16101,7 +15657,7 @@
 +char vshelper_path[255] = "/sbin/vshelper";
 +
 +
-+int do_vshelper(char *name, char *argv[], char *envp[], int sync)
++static int do_vshelper(char *name, char *argv[], char *envp[], int sync)
 +{
 +	int ret;
 +
@@ -16129,7 +15685,7 @@
 + *      envp [*] = type-specific parameters
 + */
 +
-+long vs_reboot_helper(struct vx_info *vxi, int cmd, void *arg)
++long vs_reboot_helper(struct vx_info *vxi, int cmd, void __user *arg)
 +{
 +	char id_buf[8], cmd_buf[16];
 +	char uid_buf[16], pid_buf[16];
@@ -16140,6 +15696,10 @@
 +			"PATH=/sbin:/usr/sbin:/bin:/usr/bin",
 +			uid_buf, pid_buf, cmd_buf, 0};
 +
++	if (vx_info_state(vxi, VXS_HELPER))
++		return -EAGAIN;
++	vxi->vx_state |= VXS_HELPER;
++
 +	snprintf(id_buf, sizeof(id_buf)-1, "%d", vxi->vx_id);
 +
 +	snprintf(cmd_buf, sizeof(cmd_buf)-1, "VS_CMD=%08x", cmd);
@@ -16164,6 +15724,7 @@
 +		break;
 +
 +	default:
++		vxi->vx_state &= ~VXS_HELPER;
 +		return 0;
 +	}
 +
@@ -16172,11 +15733,13 @@
 +#else
 +	ret = do_vshelper(vshelper_path, argv, envp, 0);
 +#endif
++	vxi->vx_state &= ~VXS_HELPER;
++	__wakeup_vx_info(vxi);
 +	return (ret) ? -EPERM : 0;
 +}
 +
 +
-+long vs_reboot(unsigned int cmd, void * arg)
++long vs_reboot(unsigned int cmd, void __user *arg)
 +{
 +	struct vx_info *vxi = current->vx_info;
 +	long ret = 0;
@@ -16184,6 +15747,12 @@
 +	vxdprintk(VXD_CBIT(misc, 5),
 +		"vs_reboot(%p[#%d],%d)",
 +		vxi, vxi?vxi->vx_id:0, cmd);
++
++	ret = vs_reboot_helper(vxi, cmd, arg);
++	if (ret)
++		return ret;
++
++	vxi->reboot_cmd = cmd;
 +	if (vx_info_flags(vxi, VXF_REBOOT_KILL, 0)) {
 +		switch (cmd) {
 +		case LINUX_REBOOT_CMD_RESTART:
@@ -16194,10 +15763,8 @@
 +		default:
 +			break;
 +		}
-+	} else {
-+		ret = vs_reboot_helper(vxi, cmd, arg);
 +	}
-+	return ret;
++	return 0;
 +}
 +
 +
@@ -16274,12 +15841,10 @@
 +	return 0;
 +}
 +
-diff --git a/kernel/vserver/history.c b/kernel/vserver/history.c
-new file mode 100644
-index 0000000..79610c0
---- /dev/null
-+++ b/kernel/vserver/history.c
-@@ -0,0 +1,184 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/history.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/history.c
+--- linux-2.6.16.13/kernel/vserver/history.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/history.c	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,183 @@
 +/*
 + *  kernel/vserver/history.c
 + *
@@ -16293,7 +15858,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/errno.h>
 +#include <linux/module.h>
 +#include <linux/types.h>
@@ -16464,12 +16028,10 @@
 +
 +EXPORT_SYMBOL_GPL(vxh_advance);
 +
-diff --git a/kernel/vserver/init.c b/kernel/vserver/init.c
-new file mode 100644
-index 0000000..d2e300e
---- /dev/null
-+++ b/kernel/vserver/init.c
-@@ -0,0 +1,44 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/init.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/init.c
+--- linux-2.6.16.13/kernel/vserver/init.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/init.c	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,43 @@
 +/*
 + *  linux/kernel/init.c
 + *
@@ -16481,7 +16043,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/errno.h>
 +#include <linux/init.h>
 +#include <linux/module.h>
@@ -16514,12 +16075,10 @@
 +module_init(init_vserver);
 +module_exit(exit_vserver);
 +
-diff --git a/kernel/vserver/inode.c b/kernel/vserver/inode.c
-new file mode 100644
-index 0000000..fe7f6a5
---- /dev/null
-+++ b/kernel/vserver/inode.c
-@@ -0,0 +1,369 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/inode.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/inode.c
+--- linux-2.6.16.13/kernel/vserver/inode.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/inode.c	2006-04-29 02:00:39 +0200
+@@ -0,0 +1,368 @@
 +/*
 + *  linux/kernel/vserver/inode.c
 + *
@@ -16531,7 +16090,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/sched.h>
 +#include <linux/vs_context.h>
 +#include <linux/proc_fs.h>
@@ -16798,7 +16356,7 @@
 +		error = -EPERM;
 +		flags = entry->vx_flags;
 +		if (capable(CAP_CONTEXT))
-+			error = put_user(flags, (int *) arg);
++			error = put_user(flags, (int __user *) arg);
 +		break;
 +	}
 +	case FIOC_SETXFLG: {
@@ -16810,7 +16368,7 @@
 +		if (IS_RDONLY(inode))
 +			break;
 +		error = -EFAULT;
-+		if (get_user(flags, (int *) arg))
++		if (get_user(flags, (int __user *) arg))
 +			break;
 +		error = 0;
 +		entry->vx_flags = flags;
@@ -16889,12 +16447,10 @@
 +
 +EXPORT_SYMBOL_GPL(vx_propagate_xid);
 +
-diff --git a/kernel/vserver/legacy.c b/kernel/vserver/legacy.c
-new file mode 100644
-index 0000000..cd87ccd
---- /dev/null
-+++ b/kernel/vserver/legacy.c
-@@ -0,0 +1,111 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/legacy.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/legacy.c
+--- linux-2.6.16.13/kernel/vserver/legacy.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/legacy.c	2006-04-28 03:18:07 +0200
+@@ -0,0 +1,115 @@
 +/*
 + *  linux/kernel/vserver/legacy.c
 + *
@@ -16928,6 +16484,7 @@
 +	if (!init)
 +		return -ESRCH;
 +
++	vxi->vx_flags &= ~VXF_STATE_INIT;
 +	return vx_set_init(vxi, init);
 +}
 +
@@ -16985,7 +16542,7 @@
 +		vx_info_flags(new_vxi, VX_INFO_PRIVATE, 0))
 +		goto out_put;
 +
-+	new_vxi->vx_flags &= ~(VXF_STATE_SETUP|VXF_STATE_INIT);
++	new_vxi->vx_flags &= ~VXF_STATE_SETUP;
 +
 +	ret = vx_migrate_task(current, new_vxi);
 +	if (ret == 0) {
@@ -16999,6 +16556,9 @@
 +		if (vc_data.flags & VX_INFO_NPROC)
 +			new_vxi->limit.rlim[RLIMIT_NPROC] =
 +				current->signal->rlim[RLIMIT_NPROC].rlim_max;
++
++		/* tweak some defaults for legacy */
++		new_vxi->vx_flags |= (VXF_HIDE_NETIF|VXF_INFO_INIT);
 +		ret = new_vxi->vx_id;
 +	}
 +out_put:
@@ -17006,11 +16566,9 @@
 +	return ret;
 +}
 +
-diff --git a/kernel/vserver/legacynet.c b/kernel/vserver/legacynet.c
-new file mode 100644
-index 0000000..2df0af9
---- /dev/null
-+++ b/kernel/vserver/legacynet.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/legacynet.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/legacynet.c
+--- linux-2.6.16.13/kernel/vserver/legacynet.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/legacynet.c	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,85 @@
 +
 +/*
@@ -17097,12 +16655,10 @@
 +}
 +
 +
-diff --git a/kernel/vserver/limit.c b/kernel/vserver/limit.c
-new file mode 100644
-index 0000000..5a0ad11
---- /dev/null
-+++ b/kernel/vserver/limit.c
-@@ -0,0 +1,177 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/limit.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/limit.c
+--- linux-2.6.16.13/kernel/vserver/limit.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/limit.c	2006-04-29 02:00:39 +0200
+@@ -0,0 +1,238 @@
 +/*
 + *  linux/kernel/vserver/limit.c
 + *
@@ -17176,53 +16732,114 @@
 +	return limit;
 +}
 +
-+int vc_get_rlimit(uint32_t id, void __user *data)
++static int do_get_rlimit(xid_t xid, uint32_t id,
++	uint64_t *minimum, uint64_t *softlimit, uint64_t *maximum)
 +{
 +	struct vx_info *vxi;
-+	struct vcmd_ctx_rlimit_v0 vc_data;
 +
-+	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
-+		return -EFAULT;
-+	if (!is_valid_rlimit(vc_data.id))
++	if (!is_valid_rlimit(id))
 +		return -EINVAL;
 +
-+	vxi = lookup_vx_info(id);
++	vxi = lookup_vx_info(xid);
 +	if (!vxi)
 +		return -ESRCH;
 +
-+	vc_data.maximum = vc_get_rlim(vxi, vc_data.id);
-+	vc_data.minimum = CRLIM_UNSET;
-+	vc_data.softlimit = CRLIM_UNSET;
++	if (minimum)
++		*minimum = CRLIM_UNSET;
++	if (softlimit)
++		*softlimit = CRLIM_UNSET;
++	if (maximum)
++		*maximum = vc_get_rlim(vxi, id);
 +	put_vx_info(vxi);
++	return 0;
++}
++
++int vc_get_rlimit(uint32_t id, void __user *data)
++{
++	struct vcmd_ctx_rlimit_v0 vc_data;
++	int ret;
++
++	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
++		return -EFAULT;
++
++	ret = do_get_rlimit(id, vc_data.id,
++		&vc_data.minimum, &vc_data.softlimit, &vc_data.maximum);
++	if (ret)
++		return ret;
 +
 +	if (copy_to_user (data, &vc_data, sizeof(vc_data)))
 +		return -EFAULT;
 +	return 0;
 +}
 +
-+int vc_set_rlimit(uint32_t id, void __user *data)
++static int do_set_rlimit(xid_t xid, uint32_t id,
++	uint64_t minimum, uint64_t softlimit, uint64_t maximum)
 +{
 +	struct vx_info *vxi;
++
++	if (!is_valid_rlimit(id))
++		return -EINVAL;
++
++	vxi = lookup_vx_info(xid);
++	if (!vxi)
++		return -ESRCH;
++
++	if (maximum != CRLIM_KEEP)
++		vxi->limit.rlim[id] = maximum;
++
++	put_vx_info(vxi);
++	return 0;
++}
++
++int vc_set_rlimit(uint32_t id, void __user *data)
++{
 +	struct vcmd_ctx_rlimit_v0 vc_data;
 +
 +	if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RESOURCE))
 +		return -EPERM;
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
-+	if (!is_valid_rlimit(vc_data.id))
-+		return -EINVAL;
 +
-+	vxi = lookup_vx_info(id);
-+	if (!vxi)
-+		return -ESRCH;
++	return do_set_rlimit(id, vc_data.id,
++		vc_data.minimum, vc_data.softlimit, vc_data.maximum);
++}
 +
-+	if (vc_data.maximum != CRLIM_KEEP)
-+		vxi->limit.rlim[vc_data.id] = vc_data.maximum;
-+	put_vx_info(vxi);
++#ifdef	CONFIG_IA32_EMULATION
 +
++int vc_set_rlimit_x32(uint32_t id, void __user *data)
++{
++	struct vcmd_ctx_rlimit_v0_x32 vc_data;
++
++	if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RESOURCE))
++		return -EPERM;
++	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
++		return -EFAULT;
++
++	return do_set_rlimit(id, vc_data.id,
++		vc_data.minimum, vc_data.softlimit, vc_data.maximum);
++}
++
++int vc_get_rlimit_x32(uint32_t id, void __user *data)
++{
++	struct vcmd_ctx_rlimit_v0_x32 vc_data;
++	int ret;
++
++	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
++		return -EFAULT;
++
++	ret = do_get_rlimit(id, vc_data.id,
++		&vc_data.minimum, &vc_data.softlimit, &vc_data.maximum);
++	if (ret)
++		return ret;
++
++	if (copy_to_user (data, &vc_data, sizeof(vc_data)))
++		return -EFAULT;
 +	return 0;
 +}
 +
++#endif	/* CONFIG_IA32_EMULATION */
++
++
 +int vc_get_rlimit_mask(uint32_t id, void __user *data)
 +{
 +	static struct vcmd_ctx_rlimit_mask_v0 mask = {
@@ -17280,14 +16897,10 @@
 +	return;
 +}
 +
-diff --git a/kernel/vserver/limit_init.h b/kernel/vserver/limit_init.h
-new file mode 100644
-index 0000000..74599e9
---- /dev/null
-+++ b/kernel/vserver/limit_init.h
-@@ -0,0 +1,34 @@
-+
-+#include <linux/config.h>
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/limit_init.h linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/limit_init.h
+--- linux-2.6.16.13/kernel/vserver/limit_init.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/limit_init.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,32 @@
 +
 +
 +#include <linux/config.h>
@@ -17320,11 +16933,9 @@
 +#endif
 +}
 +
-diff --git a/kernel/vserver/limit_proc.h b/kernel/vserver/limit_proc.h
-new file mode 100644
-index 0000000..f318277
---- /dev/null
-+++ b/kernel/vserver/limit_proc.h
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/limit_proc.h linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/limit_proc.h
+--- linux-2.6.16.13/kernel/vserver/limit_proc.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/limit_proc.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,58 @@
 +#ifndef _VX_LIMIT_PROC_H
 +#define _VX_LIMIT_PROC_H
@@ -17384,11 +16995,9 @@
 +#endif	/* _VX_LIMIT_PROC_H */
 +
 +
-diff --git a/kernel/vserver/namespace.c b/kernel/vserver/namespace.c
-new file mode 100644
-index 0000000..a40e0e8
---- /dev/null
-+++ b/kernel/vserver/namespace.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/namespace.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/namespace.c
+--- linux-2.6.16.13/kernel/vserver/namespace.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/namespace.c	2006-04-29 02:00:39 +0200
 @@ -0,0 +1,123 @@
 +/*
 + *  linux/kernel/vserver/namespace.c
@@ -17438,7 +17047,7 @@
 +	return 0;
 +}
 +
-+int vc_enter_namespace(uint32_t id, void *data)
++int vc_enter_namespace(uint32_t id, void __user *data)
 +{
 +	struct vx_info *vxi;
 +	struct fs_struct *old_fs, *fs;
@@ -17477,7 +17086,7 @@
 +	return ret;
 +}
 +
-+int vc_cleanup_namespace(uint32_t id, void *data)
++int vc_cleanup_namespace(uint32_t id, void __user *data)
 +{
 +	// down_write(&current->namespace->sem);
 +	spin_lock(&vfsmount_lock);
@@ -17513,12 +17122,10 @@
 +	return ret;
 +}
 +
-diff --git a/kernel/vserver/network.c b/kernel/vserver/network.c
-new file mode 100644
-index 0000000..b5f3578
---- /dev/null
-+++ b/kernel/vserver/network.c
-@@ -0,0 +1,784 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/network.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/network.c
+--- linux-2.6.16.13/kernel/vserver/network.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/network.c	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,783 @@
 +/*
 + *  linux/kernel/vserver/network.c
 + *
@@ -17534,7 +17141,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/slab.h>
 +#include <linux/vserver/network_cmd.h>
 +#include <linux/rcupdate.h>
@@ -18303,11 +17909,9 @@
 +EXPORT_SYMBOL_GPL(free_nx_info);
 +EXPORT_SYMBOL_GPL(unhash_nx_info);
 +
-diff --git a/kernel/vserver/proc.c b/kernel/vserver/proc.c
-new file mode 100644
-index 0000000..8c196d0
---- /dev/null
-+++ b/kernel/vserver/proc.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/proc.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/proc.c
+--- linux-2.6.16.13/kernel/vserver/proc.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/proc.c	2006-04-29 02:00:39 +0200
 @@ -0,0 +1,864 @@
 +/*
 + *  linux/kernel/vserver/proc.c
@@ -18592,7 +18196,7 @@
 +
 +#define PROC_BLOCK_SIZE (PAGE_SIZE - 1024)
 +
-+static ssize_t proc_vid_info_read(struct file * file, char * buf,
++static ssize_t proc_vid_info_read(struct file * file, char __user * buf,
 +			  size_t count, loff_t *ppos)
 +{
 +	struct inode * inode = file->f_dentry->d_inode;
@@ -18622,11 +18226,11 @@
 +/* here comes the lower level (vid) */
 +
 +static struct file_operations proc_vid_info_file_operations = {
-+	read:		proc_vid_info_read,
++	.read =		proc_vid_info_read,
 +};
 +
 +static struct dentry_operations proc_vid_dentry_operations = {
-+	d_revalidate:	proc_vid_revalidate,
++	.d_revalidate =	proc_vid_revalidate,
 +};
 +
 +
@@ -18794,12 +18398,12 @@
 +/* now the upper level (virtual) */
 +
 +static struct file_operations proc_vid_file_operations = {
-+	read:		generic_read_dir,
-+	readdir:	proc_vid_readdir,
++	.read =		generic_read_dir,
++	.readdir =	proc_vid_readdir,
 +};
 +
 +static struct inode_operations proc_vid_inode_operations = {
-+	lookup:		proc_vid_lookup,
++	.lookup =	proc_vid_lookup,
 +};
 +
 +
@@ -19022,12 +18626,12 @@
 +
 +
 +static struct file_operations proc_virtual_dir_operations = {
-+	read:		generic_read_dir,
-+	readdir:	proc_virtual_readdir,
++	.read =		generic_read_dir,
++	.readdir =	proc_virtual_readdir,
 +};
 +
 +static struct inode_operations proc_virtual_dir_inode_operations = {
-+	lookup:		proc_virtual_lookup,
++	.lookup =	proc_virtual_lookup,
 +};
 +
 +
@@ -19082,12 +18686,12 @@
 +
 +
 +static struct file_operations proc_vnet_dir_operations = {
-+	read:		generic_read_dir,
-+	readdir:	proc_vnet_readdir,
++	.read =		generic_read_dir,
++	.readdir =	proc_vnet_readdir,
 +};
 +
 +static struct inode_operations proc_vnet_dir_inode_operations = {
-+	lookup:		proc_vnet_lookup,
++	.lookup =	proc_vnet_lookup,
 +};
 +
 +
@@ -19173,12 +18777,10 @@
 +	return buffer - orig;
 +}
 +
-diff --git a/kernel/vserver/sched.c b/kernel/vserver/sched.c
-new file mode 100644
-index 0000000..50d5c0b
---- /dev/null
-+++ b/kernel/vserver/sched.c
-@@ -0,0 +1,218 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/sched.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/sched.c
+--- linux-2.6.16.13/kernel/vserver/sched.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/sched.c	2006-04-28 01:39:59 +0200
+@@ -0,0 +1,217 @@
 +/*
 + *  linux/kernel/vserver/sched.c
 + *
@@ -19191,7 +18793,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/sched.h>
 +#include <linux/vs_context.h>
 +#include <linux/vs_sched.h>
@@ -19299,7 +18900,7 @@
 +		vavavoom = 0;
 +
 +	vxi->sched.vavavoom = vavavoom;
-+	return vavavoom;
++	return vavavoom + vxi->sched.priority_bias;
 +}
 +
 +
@@ -19397,11 +18998,9 @@
 +	return 0;
 +}
 +
-diff --git a/kernel/vserver/sched_init.h b/kernel/vserver/sched_init.h
-new file mode 100644
-index 0000000..90d1396
---- /dev/null
-+++ b/kernel/vserver/sched_init.h
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/sched_init.h linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/sched_init.h
+--- linux-2.6.16.13/kernel/vserver/sched_init.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/sched_init.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,30 @@
 +
 +static inline void vx_info_init_sched(struct _vx_sched *sched)
@@ -19433,11 +19032,9 @@
 +	return;
 +}
 +
-diff --git a/kernel/vserver/sched_proc.h b/kernel/vserver/sched_proc.h
-new file mode 100644
-index 0000000..e65a3df
---- /dev/null
-+++ b/kernel/vserver/sched_proc.h
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/sched_proc.h linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/sched_proc.h
+--- linux-2.6.16.13/kernel/vserver/sched_proc.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/sched_proc.h	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,40 @@
 +#ifndef _VX_SCHED_PROC_H
 +#define _VX_SCHED_PROC_H
@@ -19479,12 +19076,10 @@
 +}
 +
 +#endif	/* _VX_SCHED_PROC_H */
-diff --git a/kernel/vserver/signal.c b/kernel/vserver/signal.c
-new file mode 100644
-index 0000000..2406b9d
---- /dev/null
-+++ b/kernel/vserver/signal.c
-@@ -0,0 +1,132 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/signal.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/signal.c
+--- linux-2.6.16.13/kernel/vserver/signal.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/signal.c	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,139 @@
 +/*
 + *  linux/kernel/vserver/signal.c
 + *
@@ -19586,7 +19181,8 @@
 +	set_current_state(TASK_INTERRUPTIBLE);
 +
 +wait:
-+	if (vx_info_state(vxi, VXS_SHUTDOWN|VXS_HASHED) == VXS_SHUTDOWN)
++	if (vx_info_state(vxi,
++		VXS_SHUTDOWN|VXS_HASHED|VXS_HELPER) == VXS_SHUTDOWN)
 +		goto out;
 +	if (signal_pending(current)) {
 +		ret = -ERESTARTSYS;
@@ -19606,6 +19202,7 @@
 +int vc_wait_exit(uint32_t id, void __user *data)
 +{
 +	struct vx_info *vxi;
++	struct vcmd_wait_exit_v0 vc_data;
 +	int ret;
 +
 +	vxi = lookup_vx_info(id);
@@ -19613,16 +19210,19 @@
 +		return -ESRCH;
 +
 +	ret = __wait_exit(vxi);
++	vc_data.reboot_cmd = vxi->reboot_cmd;
++	vc_data.exit_code = vxi->exit_code;
 +	put_vx_info(vxi);
++
++	if (copy_to_user (data, &vc_data, sizeof(vc_data)))
++		ret = -EFAULT;
 +	return ret;
 +}
 +
-diff --git a/kernel/vserver/switch.c b/kernel/vserver/switch.c
-new file mode 100644
-index 0000000..035c995
---- /dev/null
-+++ b/kernel/vserver/switch.c
-@@ -0,0 +1,264 @@
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/switch.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/switch.c
+--- linux-2.6.16.13/kernel/vserver/switch.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/switch.c	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,270 @@
 +/*
 + *  linux/kernel/vserver/switch.c
 + *
@@ -19639,7 +19239,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
 +#include <linux/linkage.h>
 +#include <linux/sched.h>
 +#include <linux/compat.h>
@@ -19756,10 +19355,17 @@
 +#endif
 +
 +	switch (cmd) {
++#ifdef	CONFIG_IA32_EMULATION
++	case VCMD_get_rlimit:
++		return __COMPAT(vc_get_rlimit, id, data, compat);
++	case VCMD_set_rlimit:
++		return __COMPAT(vc_set_rlimit, id, data, compat);
++#else
 +	case VCMD_get_rlimit:
 +		return vc_get_rlimit(id, data);
 +	case VCMD_set_rlimit:
 +		return vc_set_rlimit(id, data);
++#endif
 +	case VCMD_get_rlimit_mask:
 +		return vc_get_rlimit_mask(id, data);
 +
@@ -19887,11 +19493,9 @@
 +}
 +
 +#endif	/* CONFIG_COMPAT */
-diff --git a/kernel/vserver/sysctl.c b/kernel/vserver/sysctl.c
-new file mode 100644
-index 0000000..d233b1f
---- /dev/null
-+++ b/kernel/vserver/sysctl.c
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/sysctl.c linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/sysctl.c
+--- linux-2.6.16.13/kernel/vserver/sysctl.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/sysctl.c	2006-04-26 19:07:50 +0200
 @@ -0,0 +1,227 @@
 +/*
 + *  kernel/vserver/sysctl.c
@@ -20120,15 +19724,10 @@
 +EXPORT_SYMBOL_GPL(vx_debug_cvirt);
 +EXPORT_SYMBOL_GPL(vx_debug_misc);
 +
-diff --git a/kernel/vserver/vci_config.h b/kernel/vserver/vci_config.h
-new file mode 100644
-index 0000000..1f3b17b
---- /dev/null
-+++ b/kernel/vserver/vci_config.h
-@@ -0,0 +1,73 @@
-+
-+#include <linux/config.h>
-+
+diff -NurpP --minimal linux-2.6.16.13/kernel/vserver/vci_config.h linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/vci_config.h
+--- linux-2.6.16.13/kernel/vserver/vci_config.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/kernel/vserver/vci_config.h	2006-04-26 19:07:50 +0200
+@@ -0,0 +1,70 @@
 +
 +enum {
 +	VCI_KCBIT_LEGACY = 1,
@@ -20199,10 +19798,9 @@
 +	0;
 +}
 +
-diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c
-index b960ac8..0c27759 100644
---- a/mm/filemap_xip.c
-+++ b/mm/filemap_xip.c
+diff -NurpP --minimal linux-2.6.16.13/mm/filemap_xip.c linux-2.6.16.13-vs2.0.2-rc19/mm/filemap_xip.c
+--- linux-2.6.16.13/mm/filemap_xip.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/filemap_xip.c	2006-04-26 19:07:50 +0200
 @@ -13,6 +13,7 @@
  #include <linux/module.h>
  #include <linux/uio.h>
@@ -20211,10 +19809,9 @@
  #include <asm/tlbflush.h>
  #include "filemap.h"
  
-diff --git a/mm/fremap.c b/mm/fremap.c
-index 9f381e5..a7538bd 100644
---- a/mm/fremap.c
-+++ b/mm/fremap.c
+diff -NurpP --minimal linux-2.6.16.13/mm/fremap.c linux-2.6.16.13-vs2.0.2-rc19/mm/fremap.c
+--- linux-2.6.16.13/mm/fremap.c	2006-01-03 17:30:13 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/fremap.c	2006-04-26 19:07:50 +0200
 @@ -15,6 +15,7 @@
  #include <linux/rmap.h>
  #include <linux/module.h>
@@ -20240,10 +19837,9 @@
  
  	if (pte_none(*pte) || !zap_pte(mm, vma, addr, pte))
  		inc_mm_counter(mm, file_rss);
-diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index 5087077..f1b2c19 100644
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
+diff -NurpP --minimal linux-2.6.16.13/mm/hugetlb.c linux-2.6.16.13-vs2.0.2-rc19/mm/hugetlb.c
+--- linux-2.6.16.13/mm/hugetlb.c	2006-02-18 14:40:38 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/hugetlb.c	2006-04-26 19:07:50 +0200
 @@ -18,6 +18,7 @@
  #include <asm/pgtable.h>
  
@@ -20252,11 +19848,10 @@
  
  const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL;
  static unsigned long nr_huge_pages, free_huge_pages;
-diff --git a/mm/memory.c b/mm/memory.c
-index 9abc600..520b66e 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -1903,6 +1903,10 @@ again:
+diff -NurpP --minimal linux-2.6.16.13/mm/memory.c linux-2.6.16.13-vs2.0.2-rc19/mm/memory.c
+--- linux-2.6.16.13/mm/memory.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/memory.c	2006-04-26 19:07:50 +0200
+@@ -1904,6 +1904,10 @@ again:
  		grab_swap_token();
  	}
  
@@ -20267,7 +19862,7 @@
  	mark_page_accessed(page);
  	lock_page(page);
  	if (!PageSwapCache(page)) {
-@@ -1980,6 +1984,8 @@ static int do_anonymous_page(struct mm_s
+@@ -1981,6 +1985,8 @@ static int do_anonymous_page(struct mm_s
  		/* Allocate our own private page. */
  		pte_unmap(page_table);
  
@@ -20276,7 +19871,7 @@
  		if (unlikely(anon_vma_prepare(vma)))
  			goto oom;
  		page = alloc_zeroed_user_highpage(vma, address);
-@@ -2058,6 +2064,9 @@ static int do_no_page(struct mm_struct *
+@@ -2059,6 +2065,9 @@ static int do_no_page(struct mm_struct *
  		smp_rmb(); /* serializes i_size against truncate_count */
  	}
  retry:
@@ -20286,10 +19881,9 @@
  	new_page = vma->vm_ops->nopage(vma, address & PAGE_MASK, &ret);
  	/*
  	 * No smp_rmb is needed here as long as there's a full
-diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index 954981b..6319c51 100644
---- a/mm/mempolicy.c
-+++ b/mm/mempolicy.c
+diff -NurpP --minimal linux-2.6.16.13/mm/mempolicy.c linux-2.6.16.13-vs2.0.2-rc19/mm/mempolicy.c
+--- linux-2.6.16.13/mm/mempolicy.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/mempolicy.c	2006-04-26 19:07:50 +0200
 @@ -86,6 +86,7 @@
  #include <linux/swap.h>
  #include <linux/seq_file.h>
@@ -20298,10 +19892,9 @@
  
  #include <asm/tlbflush.h>
  #include <asm/uaccess.h>
-diff --git a/mm/mlock.c b/mm/mlock.c
-index b90c595..6ea2ee0 100644
---- a/mm/mlock.c
-+++ b/mm/mlock.c
+diff -NurpP --minimal linux-2.6.16.13/mm/mlock.c linux-2.6.16.13-vs2.0.2-rc19/mm/mlock.c
+--- linux-2.6.16.13/mm/mlock.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/mlock.c	2006-04-26 19:07:50 +0200
 @@ -10,6 +10,7 @@
  #include <linux/mm.h>
  #include <linux/mempolicy.h>
@@ -20358,10 +19951,9 @@
  	if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
  	    capable(CAP_IPC_LOCK))
  		ret = do_mlockall(flags);
-diff --git a/mm/mmap.c b/mm/mmap.c
-index 47556d2..fe5f116 100644
---- a/mm/mmap.c
-+++ b/mm/mmap.c
+diff -NurpP --minimal linux-2.6.16.13/mm/mmap.c linux-2.6.16.13-vs2.0.2-rc19/mm/mmap.c
+--- linux-2.6.16.13/mm/mmap.c	2006-02-18 14:40:38 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/mmap.c	2006-04-26 19:07:50 +0200
 @@ -1116,10 +1116,10 @@ munmap_back:
  		kmem_cache_free(vm_area_cachep, vma);
  	}
@@ -20460,10 +20052,9 @@
 +		return 0;
  	return 1;
  }
-diff --git a/mm/mremap.c b/mm/mremap.c
-index 1903bdf..25a9433 100644
---- a/mm/mremap.c
-+++ b/mm/mremap.c
+diff -NurpP --minimal linux-2.6.16.13/mm/mremap.c linux-2.6.16.13-vs2.0.2-rc19/mm/mremap.c
+--- linux-2.6.16.13/mm/mremap.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/mremap.c	2006-04-26 19:07:50 +0200
 @@ -18,6 +18,7 @@
  #include <linux/highmem.h>
  #include <linux/security.h>
@@ -20513,10 +20104,9 @@
  				make_pages_present(addr + old_len,
  						   addr + new_len);
  			}
-diff --git a/mm/nommu.c b/mm/nommu.c
-index 4951f47..c61677b 100644
---- a/mm/nommu.c
-+++ b/mm/nommu.c
+diff -NurpP --minimal linux-2.6.16.13/mm/nommu.c linux-2.6.16.13-vs2.0.2-rc19/mm/nommu.c
+--- linux-2.6.16.13/mm/nommu.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/nommu.c	2006-04-26 19:07:50 +0200
 @@ -820,7 +820,7 @@ unsigned long do_mmap_pgoff(struct file 
  	realalloc += kobjsize(vma);
  	askedalloc += sizeof(*vma);
@@ -20544,10 +20134,9 @@
  
  		while ((tmp = mm->context.vmlist)) {
  			mm->context.vmlist = tmp->next;
-diff --git a/mm/oom_kill.c b/mm/oom_kill.c
-index 78747af..f2479c9 100644
---- a/mm/oom_kill.c
-+++ b/mm/oom_kill.c
+diff -NurpP --minimal linux-2.6.16.13/mm/oom_kill.c linux-2.6.16.13-vs2.0.2-rc19/mm/oom_kill.c
+--- linux-2.6.16.13/mm/oom_kill.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/oom_kill.c	2006-04-26 19:07:50 +0200
 @@ -55,6 +55,7 @@ unsigned long badness(struct task_struct
  	 * The memory size of the process is the basis for the badness.
  	 */
@@ -20556,10 +20145,9 @@
  
  	/*
  	 * Processes which fork a lot of child processes are likely
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 234bd48..557a64f 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
+diff -NurpP --minimal linux-2.6.16.13/mm/page_alloc.c linux-2.6.16.13-vs2.0.2-rc19/mm/page_alloc.c
+--- linux-2.6.16.13/mm/page_alloc.c	2006-05-03 16:59:02 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/page_alloc.c	2006-04-26 19:07:50 +0200
 @@ -37,6 +37,7 @@
  #include <linux/nodemask.h>
  #include <linux/vmalloc.h>
@@ -20568,7 +20156,7 @@
  
  #include <asm/tlbflush.h>
  #include "internal.h"
-@@ -1350,6 +1351,8 @@ void si_meminfo(struct sysinfo *val)
+@@ -1355,6 +1356,8 @@ void si_meminfo(struct sysinfo *val)
  	val->freehigh = 0;
  #endif
  	val->mem_unit = PAGE_SIZE;
@@ -20577,7 +20165,7 @@
  }
  
  EXPORT_SYMBOL(si_meminfo);
-@@ -1364,6 +1367,8 @@ void si_meminfo_node(struct sysinfo *val
+@@ -1369,6 +1372,8 @@ void si_meminfo_node(struct sysinfo *val
  	val->totalhigh = pgdat->node_zones[ZONE_HIGHMEM].present_pages;
  	val->freehigh = pgdat->node_zones[ZONE_HIGHMEM].free_pages;
  	val->mem_unit = PAGE_SIZE;
@@ -20586,10 +20174,9 @@
  }
  #endif
  
-diff --git a/mm/rmap.c b/mm/rmap.c
-index 67f0e20..c0da121 100644
---- a/mm/rmap.c
-+++ b/mm/rmap.c
+diff -NurpP --minimal linux-2.6.16.13/mm/rmap.c linux-2.6.16.13-vs2.0.2-rc19/mm/rmap.c
+--- linux-2.6.16.13/mm/rmap.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/rmap.c	2006-04-26 19:07:50 +0200
 @@ -53,6 +53,7 @@
  #include <linux/rmap.h>
  #include <linux/rcupdate.h>
@@ -20598,10 +20185,9 @@
  
  #include <asm/tlbflush.h>
  
-diff --git a/mm/shmem.c b/mm/shmem.c
-index 7c455fb..d1b4192 100644
---- a/mm/shmem.c
-+++ b/mm/shmem.c
+diff -NurpP --minimal linux-2.6.16.13/mm/shmem.c linux-2.6.16.13-vs2.0.2-rc19/mm/shmem.c
+--- linux-2.6.16.13/mm/shmem.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/shmem.c	2006-04-26 19:07:50 +0200
 @@ -51,7 +51,6 @@
  #include <asm/pgtable.h>
  
@@ -20628,10 +20214,9 @@
  	sb->s_op = &shmem_ops;
  
  	inode = shmem_get_inode(sb, S_IFDIR | mode, 0);
-diff --git a/mm/swapfile.c b/mm/swapfile.c
-index 1f9cf0d..7fab939 100644
---- a/mm/swapfile.c
-+++ b/mm/swapfile.c
+diff -NurpP --minimal linux-2.6.16.13/mm/swapfile.c linux-2.6.16.13-vs2.0.2-rc19/mm/swapfile.c
+--- linux-2.6.16.13/mm/swapfile.c	2006-02-18 14:40:38 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/swapfile.c	2006-04-26 19:07:50 +0200
 @@ -32,6 +32,7 @@
  #include <asm/pgtable.h>
  #include <asm/tlbflush.h>
@@ -20649,11 +20234,10 @@
  }
  
  /*
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 7ccf763..b28865d 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -1826,7 +1826,7 @@ static int __init kswapd_init(void)
+diff -NurpP --minimal linux-2.6.16.13/mm/vmscan.c linux-2.6.16.13-vs2.0.2-rc19/mm/vmscan.c
+--- linux-2.6.16.13/mm/vmscan.c	2006-04-09 13:49:58 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/mm/vmscan.c	2006-04-26 19:07:50 +0200
+@@ -1832,7 +1832,7 @@ static int __init kswapd_init(void)
  	swap_setup();
  	for_each_pgdat(pgdat)
  		pgdat->kswapd
@@ -20662,10 +20246,9 @@
  	total_memory = nr_free_pagecache_pages();
  	hotcpu_notifier(cpu_callback, 0);
  	return 0;
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 2afb0de..407124c 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
+diff -NurpP --minimal linux-2.6.16.13/net/core/dev.c linux-2.6.16.13-vs2.0.2-rc19/net/core/dev.c
+--- linux-2.6.16.13/net/core/dev.c	2006-05-03 16:59:02 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/core/dev.c	2006-04-26 19:07:50 +0200
 @@ -114,6 +114,7 @@
  #include <linux/wireless.h>		/* Note : will define WIRELESS_EXT */
  #include <net/iw_handler.h>
@@ -20695,10 +20278,9 @@
  	if (dev->get_stats) {
  		struct net_device_stats *stats = dev->get_stats(dev);
  
-diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
-index eca2976..8e3a809 100644
---- a/net/core/rtnetlink.c
-+++ b/net/core/rtnetlink.c
+diff -NurpP --minimal linux-2.6.16.13/net/core/rtnetlink.c linux-2.6.16.13-vs2.0.2-rc19/net/core/rtnetlink.c
+--- linux-2.6.16.13/net/core/rtnetlink.c	2006-02-18 14:40:39 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/core/rtnetlink.c	2006-04-26 19:07:50 +0200
 @@ -278,6 +278,9 @@ static int rtnetlink_dump_ifinfo(struct 
  	for (dev=dev_base, idx=0; dev; dev = dev->next, idx++) {
  		if (idx < s_idx)
@@ -20719,10 +20301,9 @@
  	skb = alloc_skb(size, GFP_KERNEL);
  	if (!skb)
  		return;
-diff --git a/net/core/sock.c b/net/core/sock.c
-index 6e00811..ddb6738 100644
---- a/net/core/sock.c
-+++ b/net/core/sock.c
+diff -NurpP --minimal linux-2.6.16.13/net/core/sock.c linux-2.6.16.13-vs2.0.2-rc19/net/core/sock.c
+--- linux-2.6.16.13/net/core/sock.c	2006-05-03 16:59:02 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/core/sock.c	2006-04-26 19:07:50 +0200
 @@ -125,6 +125,9 @@
  #include <linux/ipsec.h>
  
@@ -20733,7 +20314,7 @@
  
  #ifdef CONFIG_INET
  #include <net/tcp.h>
-@@ -660,6 +663,8 @@ struct sock *sk_alloc(int family, gfp_t 
+@@ -661,6 +664,8 @@ struct sock *sk_alloc(int family, gfp_t 
  			sk->sk_prot = sk->sk_prot_creator = prot;
  			sock_lock_init(sk);
  		}
@@ -20742,7 +20323,7 @@
  		
  		if (security_sk_alloc(sk, family, priority))
  			goto out_free;
-@@ -698,6 +703,11 @@ void sk_free(struct sock *sk)
+@@ -699,6 +704,11 @@ void sk_free(struct sock *sk)
  		       __FUNCTION__, atomic_read(&sk->sk_omem_alloc));
  
  	security_sk_free(sk);
@@ -20754,7 +20335,7 @@
  	if (sk->sk_prot_creator->slab != NULL)
  		kmem_cache_free(sk->sk_prot_creator->slab, sk);
  	else
-@@ -715,6 +725,8 @@ struct sock *sk_clone(const struct sock 
+@@ -716,6 +726,8 @@ struct sock *sk_clone(const struct sock 
  		memcpy(newsk, sk, sk->sk_prot->obj_size);
  
  		/* SANITY */
@@ -20763,7 +20344,7 @@
  		sk_node_init(&newsk->sk_node);
  		sock_lock_init(newsk);
  		bh_lock_sock(newsk);
-@@ -755,6 +767,12 @@ struct sock *sk_clone(const struct sock 
+@@ -756,6 +768,12 @@ struct sock *sk_clone(const struct sock 
  		newsk->sk_priority = 0;
  		atomic_set(&newsk->sk_refcnt, 2);
  
@@ -20776,7 +20357,7 @@
  		/*
  		 * Increment the counter in the same struct proto as the master
  		 * sock (sk_refcnt_debug_inc uses newsk->sk_prot->socks, that
-@@ -1319,6 +1337,11 @@ void sock_init_data(struct socket *sock,
+@@ -1320,6 +1338,11 @@ void sock_init_data(struct socket *sock,
  	sk->sk_stamp.tv_sec     = -1L;
  	sk->sk_stamp.tv_usec    = -1L;
  
@@ -20788,10 +20369,9 @@
  	atomic_set(&sk->sk_refcnt, 1);
  }
  
-diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
-index 97c276f..fef25db 100644
---- a/net/ipv4/af_inet.c
-+++ b/net/ipv4/af_inet.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/af_inet.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/af_inet.c
+--- linux-2.6.16.13/net/ipv4/af_inet.c	2006-02-18 14:40:39 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/af_inet.c	2006-04-26 19:07:50 +0200
 @@ -114,6 +114,7 @@
  #ifdef CONFIG_IP_MROUTE
  #include <linux/mroute.h>
@@ -20885,55 +20465,43 @@
  	if (chk_addr_ret == RTN_MULTICAST || chk_addr_ret == RTN_BROADCAST)
  		inet->saddr = 0;  /* Use device */
  
-diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
-index 3ffa60d..ea91fd3 100644
---- a/net/ipv4/devinet.c
-+++ b/net/ipv4/devinet.c
-@@ -529,6 +529,33 @@ static __inline__ int inet_abc_len(u32 a
-   	return rc;
- }
- 
-+/*
-+	Check that a device is not member of the ipv4root assigned to the process
-+	Return true if this is the case
-+
-+	If the process is not bound to specific IP, then it returns 0 (all
-+	interface are fine).
-+*/
-+static inline int devinet_notiproot (struct in_ifaddr *ifa)
-+{
-+	int ret = 0;
-+	struct nx_info *nxi;
-+
-+	if ((nxi = current->nx_info)) {
-+		int i;
-+		int nbip = nxi->nbipv4;
-+		__u32 addr = ifa->ifa_local;
-+		ret = 1;
-+		for (i=0; i<nbip; i++) {
-+			if(nxi->ipv4[i] == addr) {
-+				ret = 0;
-+				break;
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/devinet.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/devinet.c
+--- linux-2.6.16.13/net/ipv4/devinet.c	2006-02-18 14:40:39 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/devinet.c	2006-04-26 19:09:22 +0200
+@@ -607,6 +607,9 @@ int devinet_ioctl(unsigned int cmd, void
+ 		*colon = ':';
+ 
+ 	if ((in_dev = __in_dev_get_rtnl(dev)) != NULL) {
++		struct nx_info *nxi = current->nx_info;
++		int hide_netif = vx_flags(VXF_HIDE_NETIF, 0);
++
+ 		if (tryaddrmatch) {
+ 			/* Matthias Andree */
+ 			/* compare label and address (4.4BSD style) */
+@@ -615,6 +618,8 @@ int devinet_ioctl(unsigned int cmd, void
+ 			   This is checked above. */
+ 			for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL;
+ 			     ifap = &ifa->ifa_next) {
++				if (hide_netif && !ifa_in_nx_info(ifa, nxi))
++					continue;
+ 				if (!strcmp(ifr.ifr_name, ifa->ifa_label) &&
+ 				    sin_orig.sin_addr.s_addr ==
+ 							ifa->ifa_address) {
+@@ -627,9 +632,12 @@ int devinet_ioctl(unsigned int cmd, void
+ 		   comparing just the label */
+ 		if (!ifa) {
+ 			for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL;
+-			     ifap = &ifa->ifa_next)
++			     ifap = &ifa->ifa_next) {
++				if (hide_netif && !ifa_in_nx_info(ifa, nxi))
++					continue;
+ 				if (!strcmp(ifr.ifr_name, ifa->ifa_label))
+ 					break;
 +			}
-+		}
-+	}
-+	return ret;
-+}
-+
- 
- int devinet_ioctl(unsigned int cmd, void __user *arg)
- {
-@@ -636,6 +663,9 @@ int devinet_ioctl(unsigned int cmd, void
- 	ret = -EADDRNOTAVAIL;
- 	if (!ifa && cmd != SIOCSIFADDR && cmd != SIOCSIFFLAGS)
- 		goto done;
-+	if (vx_flags(VXF_HIDE_NETIF, 0) &&
-+		!ifa_in_nx_info(ifa, current->nx_info))
-+		goto done;
+ 		}
+ 	}
  
- 	switch(cmd) {
- 	case SIOCGIFADDR:	/* Get interface address */
-@@ -780,6 +810,9 @@ static int inet_gifconf(struct net_devic
+@@ -780,6 +788,9 @@ static int inet_gifconf(struct net_devic
  		goto out;
  
  	for (; ifa; ifa = ifa->ifa_next) {
@@ -20943,7 +20511,7 @@
  		if (!buf) {
  			done += sizeof(ifr);
  			continue;
-@@ -1091,6 +1124,7 @@ static int inet_dump_ifaddr(struct sk_bu
+@@ -1091,6 +1102,7 @@ static int inet_dump_ifaddr(struct sk_bu
  	struct net_device *dev;
  	struct in_device *in_dev;
  	struct in_ifaddr *ifa;
@@ -20951,7 +20519,7 @@
  	int s_ip_idx, s_idx = cb->args[0];
  
  	s_ip_idx = ip_idx = cb->args[1];
-@@ -1108,6 +1142,9 @@ static int inet_dump_ifaddr(struct sk_bu
+@@ -1108,6 +1120,9 @@ static int inet_dump_ifaddr(struct sk_bu
  
  		for (ifa = in_dev->ifa_list, ip_idx = 0; ifa;
  		     ifa = ifa->ifa_next, ip_idx++) {
@@ -20961,10 +20529,9 @@
  			if (ip_idx < s_ip_idx)
  				continue;
  			if (inet_fill_ifaddr(skb, ifa, NETLINK_CB(cb->skb).pid,
-diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c
-index e2890ec..c9b54bb 100644
---- a/net/ipv4/fib_hash.c
-+++ b/net/ipv4/fib_hash.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/fib_hash.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/fib_hash.c
+--- linux-2.6.16.13/net/ipv4/fib_hash.c	2006-04-09 13:49:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/fib_hash.c	2006-04-26 19:07:50 +0200
 @@ -989,6 +989,8 @@ static unsigned fib_flag_trans(int type,
  	return flags;
  }
@@ -20984,10 +20551,9 @@
  		snprintf(bf, sizeof(bf),
  			 "%s\t%08X\t%08X\t%04X\t%d\t%u\t%d\t%08X\t%d\t%u\t%u",
  			 fi->fib_dev ? fi->fib_dev->name : "*", prefix,
-diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
-index ae20281..a7c37bd 100644
---- a/net/ipv4/inet_connection_sock.c
-+++ b/net/ipv4/inet_connection_sock.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/inet_connection_sock.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/inet_connection_sock.c
+--- linux-2.6.16.13/net/ipv4/inet_connection_sock.c	2006-02-18 14:40:39 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/inet_connection_sock.c	2006-04-26 19:07:50 +0200
 @@ -40,7 +40,6 @@ int sysctl_local_port_range[2] = { 1024,
  int inet_csk_bind_conflict(const struct sock *sk,
  			   const struct inet_bind_bucket *tb)
@@ -21008,10 +20574,9 @@
  					break;
  			}
  		}
-diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
-index 457db99..03cfe8f 100644
---- a/net/ipv4/inet_diag.c
-+++ b/net/ipv4/inet_diag.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/inet_diag.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/inet_diag.c
+--- linux-2.6.16.13/net/ipv4/inet_diag.c	2006-04-09 13:49:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/inet_diag.c	2006-04-26 19:07:50 +0200
 @@ -694,6 +694,8 @@ static int inet_diag_dump(struct sk_buff
  			sk_for_each(sk, node, &hashinfo->listening_hash[i]) {
  				struct inet_sock *inet = inet_sk(sk);
@@ -21039,10 +20604,9 @@
  				if (num < s_num)
  					goto next_dying;
  				if (r->id.idiag_sport != tw->tw_sport &&
-diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
-index 3322811..d3ec834 100644
---- a/net/ipv4/inet_hashtables.c
-+++ b/net/ipv4/inet_hashtables.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/inet_hashtables.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/inet_hashtables.c
+--- linux-2.6.16.13/net/ipv4/inet_hashtables.c	2006-02-18 14:40:39 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/inet_hashtables.c	2006-04-26 19:07:50 +0200
 @@ -143,11 +143,10 @@ struct sock *__inet_lookup_listener(cons
  			const __u32 rcv_saddr = inet->rcv_saddr;
  			int score = sk->sk_family == PF_INET ? 1 : 0;
@@ -21058,10 +20622,9 @@
  			if (sk->sk_bound_dev_if) {
  				if (sk->sk_bound_dev_if != dif)
  					continue;
-diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
-index f29a12d..84faac0 100644
---- a/net/ipv4/raw.c
-+++ b/net/ipv4/raw.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/raw.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/raw.c
+--- linux-2.6.16.13/net/ipv4/raw.c	2006-02-18 14:40:41 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/raw.c	2006-04-26 19:07:50 +0200
 @@ -102,6 +102,27 @@ static void raw_v4_unhash(struct sock *s
  	write_unlock_bh(&raw_v4_lock);
  }
@@ -21153,10 +20716,9 @@
  
  	if (!sk && ++state->bucket < RAWV4_HTABLE_SIZE) {
  		sk = sk_head(&raw_v4_htable[state->bucket]);
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index 00aa80e..2d52d50 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/tcp.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/tcp.c
+--- linux-2.6.16.13/net/ipv4/tcp.c	2006-04-09 13:49:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/tcp.c	2006-04-26 19:07:50 +0200
 @@ -257,6 +257,7 @@
  #include <linux/fs.h>
  #include <linux/random.h>
@@ -21165,10 +20727,9 @@
  
  #include <net/icmp.h>
  #include <net/tcp.h>
-diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
-index 233bdf2..dd0dbd8 100644
---- a/net/ipv4/tcp_ipv4.c
-+++ b/net/ipv4/tcp_ipv4.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/tcp_ipv4.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/tcp_ipv4.c
+--- linux-2.6.16.13/net/ipv4/tcp_ipv4.c	2006-02-18 14:40:42 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/tcp_ipv4.c	2006-04-26 19:07:50 +0200
 @@ -77,6 +77,7 @@
  #include <linux/stddef.h>
  #include <linux/proc_fs.h>
@@ -21254,10 +20815,9 @@
  		if (sk->sk_family == st->family)
  			goto found;
  	}
-diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
-index 2b9b7f6..0582ec2 100644
---- a/net/ipv4/tcp_minisocks.c
-+++ b/net/ipv4/tcp_minisocks.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/tcp_minisocks.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/tcp_minisocks.c
+--- linux-2.6.16.13/net/ipv4/tcp_minisocks.c	2006-04-09 13:49:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/tcp_minisocks.c	2006-04-26 19:07:50 +0200
 @@ -29,6 +29,10 @@
  #include <net/inet_common.h>
  #include <net/xfrm.h>
@@ -21281,10 +20841,9 @@
  #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
  		if (tw->tw_family == PF_INET6) {
  			struct ipv6_pinfo *np = inet6_sk(sk);
-diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
-index 0084047..9b2757c 100644
---- a/net/ipv4/udp.c
-+++ b/net/ipv4/udp.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv4/udp.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/udp.c
+--- linux-2.6.16.13/net/ipv4/udp.c	2006-02-18 14:40:42 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv4/udp.c	2006-04-26 19:08:56 +0200
 @@ -176,14 +176,12 @@ gotit:
  			struct inet_sock *inet2 = inet_sk(sk2);
  
@@ -21303,37 +20862,27 @@
  			    (!sk2->sk_reuse || !sk->sk_reuse))
  				goto fail;
  		}
-@@ -218,6 +216,17 @@ static void udp_v4_unhash(struct sock *s
+@@ -218,6 +216,7 @@ static void udp_v4_unhash(struct sock *s
  	write_unlock_bh(&udp_hash_lock);
  }
  
-+static inline int udp_in_list(struct nx_info *nx_info, u32 addr)
-+{
-+	int n = nx_info->nbipv4;
-+	int i;
-+
-+	for (i=0; i<n; i++)
-+		if (nx_info->ipv4[i] == addr)
-+			return 1;
-+	return 0;
-+}
 +
  /* UDP is nearly always wildcards out the wazoo, it makes no sense to try
   * harder than this. -DaveM
   */
-@@ -238,6 +247,11 @@ static struct sock *udp_v4_lookup_longwa
+@@ -238,6 +237,11 @@ static struct sock *udp_v4_lookup_longwa
  				if (inet->rcv_saddr != daddr)
  					continue;
  				score+=2;
 +			} else if (sk->sk_nx_info) {
-+				if (udp_in_list(sk->sk_nx_info, daddr))
++				if (addr_in_nx_info(sk->sk_nx_info, daddr))
 +					score+=2;
 +				else
 +					continue;
  			}
  			if (inet->daddr) {
  				if (inet->daddr != saddr)
-@@ -294,7 +308,8 @@ static inline struct sock *udp_v4_mcast_
+@@ -294,7 +298,8 @@ static inline struct sock *udp_v4_mcast_
  		if (inet->num != hnum					||
  		    (inet->daddr && inet->daddr != rmt_addr)		||
  		    (inet->dport != rmt_port && inet->dport)		||
@@ -21343,7 +20892,7 @@
  		    ipv6_only_sock(s)					||
  		    (s->sk_bound_dev_if && s->sk_bound_dev_if != dif))
  			continue;
-@@ -604,6 +619,15 @@ int udp_sendmsg(struct kiocb *iocb, stru
+@@ -604,6 +609,15 @@ int udp_sendmsg(struct kiocb *iocb, stru
  				    .uli_u = { .ports =
  					       { .sport = inet->sport,
  						 .dport = dport } } };
@@ -21359,7 +20908,7 @@
  		err = ip_route_output_flow(&rt, &fl, sk, !(msg->msg_flags&MSG_DONTWAIT));
  		if (err)
  			goto out;
-@@ -1370,8 +1394,10 @@ static struct sock *udp_get_first(struct
+@@ -1370,8 +1384,10 @@ static struct sock *udp_get_first(struct
  
  	for (state->bucket = 0; state->bucket < UDP_HTABLE_SIZE; ++state->bucket) {
  		struct hlist_node *node;
@@ -21371,7 +20920,7 @@
  				goto found;
  		}
  	}
-@@ -1388,7 +1414,8 @@ static struct sock *udp_get_next(struct 
+@@ -1388,7 +1404,8 @@ static struct sock *udp_get_next(struct 
  		sk = sk_next(sk);
  try_again:
  		;
@@ -21381,10 +20930,9 @@
  
  	if (!sk && ++state->bucket < UDP_HTABLE_SIZE) {
  		sk = sk_head(&udp_hash[state->bucket]);
-diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index b7d8822..d4ef097 100644
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
+diff -NurpP --minimal linux-2.6.16.13/net/ipv6/addrconf.c linux-2.6.16.13-vs2.0.2-rc19/net/ipv6/addrconf.c
+--- linux-2.6.16.13/net/ipv6/addrconf.c	2006-04-09 13:49:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/ipv6/addrconf.c	2006-04-26 19:07:50 +0200
 @@ -2646,7 +2646,10 @@ static void if6_seq_stop(struct seq_file
  static int if6_seq_show(struct seq_file *seq, void *v)
  {
@@ -21419,10 +20967,9 @@
  	read_lock(&dev_base_lock);
  	for (dev=dev_base, idx=0; dev; dev = dev->next, idx++) {
  		if (idx < s_idx)
-diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
-index 6b9772d..2f8b8f2 100644
---- a/net/netlink/af_netlink.c
-+++ b/net/netlink/af_netlink.c
+diff -NurpP --minimal linux-2.6.16.13/net/netlink/af_netlink.c linux-2.6.16.13-vs2.0.2-rc19/net/netlink/af_netlink.c
+--- linux-2.6.16.13/net/netlink/af_netlink.c	2006-04-09 13:49:59 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/netlink/af_netlink.c	2006-04-26 19:07:50 +0200
 @@ -56,6 +56,9 @@
  #include <linux/mm.h>
  #include <linux/types.h>
@@ -21433,10 +20980,9 @@
  
  #include <net/sock.h>
  #include <net/scm.h>
-diff --git a/net/socket.c b/net/socket.c
-index a00851f..a942fe6 100644
---- a/net/socket.c
-+++ b/net/socket.c
+diff -NurpP --minimal linux-2.6.16.13/net/socket.c linux-2.6.16.13-vs2.0.2-rc19/net/socket.c
+--- linux-2.6.16.13/net/socket.c	2006-02-18 14:40:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/socket.c	2006-04-26 19:07:50 +0200
 @@ -96,6 +96,7 @@
  
  #include <net/sock.h>
@@ -21537,10 +21083,9 @@
  
  	err = sock1->ops->socketpair(sock1, sock2);
  	if (err < 0) 
-diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c
-index 8d6f1a1..9c893ef 100644
---- a/net/sunrpc/auth.c
-+++ b/net/sunrpc/auth.c
+diff -NurpP --minimal linux-2.6.16.13/net/sunrpc/auth.c linux-2.6.16.13-vs2.0.2-rc19/net/sunrpc/auth.c
+--- linux-2.6.16.13/net/sunrpc/auth.c	2006-02-18 14:40:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/sunrpc/auth.c	2006-04-26 19:07:50 +0200
 @@ -13,6 +13,7 @@
  #include <linux/errno.h>
  #include <linux/sunrpc/clnt.h>
@@ -21565,10 +21110,9 @@
  		.group_info = current->group_info,
  	};
  	struct rpc_cred *ret;
-diff --git a/net/sunrpc/auth_unix.c b/net/sunrpc/auth_unix.c
-index df14b6b..4f2ad4f 100644
---- a/net/sunrpc/auth_unix.c
-+++ b/net/sunrpc/auth_unix.c
+diff -NurpP --minimal linux-2.6.16.13/net/sunrpc/auth_unix.c linux-2.6.16.13-vs2.0.2-rc19/net/sunrpc/auth_unix.c
+--- linux-2.6.16.13/net/sunrpc/auth_unix.c	2006-02-18 14:40:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/sunrpc/auth_unix.c	2006-04-26 19:07:50 +0200
 @@ -11,12 +11,14 @@
  #include <linux/module.h>
  #include <linux/sunrpc/clnt.h>
@@ -21634,10 +21178,9 @@
  	hold = p++;
  	for (i = 0; i < 16 && cred->uc_gids[i] != (gid_t) NOGROUP; i++)
  		*p++ = htonl((u32) cred->uc_gids[i]);
-diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
-index c323cc6..7020c57 100644
---- a/net/unix/af_unix.c
-+++ b/net/unix/af_unix.c
+diff -NurpP --minimal linux-2.6.16.13/net/unix/af_unix.c linux-2.6.16.13-vs2.0.2-rc19/net/unix/af_unix.c
+--- linux-2.6.16.13/net/unix/af_unix.c	2006-04-09 13:50:00 +0200
++++ linux-2.6.16.13-vs2.0.2-rc19/net/unix/af_unix.c	2006-04-26 19:07:50 +0200
 @@ -117,6 +117,9 @@
  #include <linux/mount.h>
  #include <net/checksum.h>
@@ -21666,10 +21209,9 @@
  		if (err)
  			goto out_mknod_dput;
  		mutex_unlock(&nd.dentry->d_inode->i_mutex);
-diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
-index 72b6ff3..3da1bd9 100644
---- a/net/x25/af_x25.c
-+++ b/net/x25/af_x25.c
+diff -NurpP --minimal linux-2.6.16.13/net/x25/af_x25.c linux-2.6.16.13-vs2.0.2-rc19/net/x25/af_x25.c
+--- linux-2.6.16.13/net/x25/af_x25.c	2006-02-18 14:40:43 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/net/x25/af_x25.c	2006-04-26 19:07:50 +0200
 @@ -491,7 +491,10 @@ static int x25_create(struct socket *soc
  
  	x25 = x25_sk(sk);
@@ -21682,10 +21224,9 @@
  
  	x25_init_timers(sk);
  
-diff --git a/security/commoncap.c b/security/commoncap.c
-index 8a6e097..403e104 100644
---- a/security/commoncap.c
-+++ b/security/commoncap.c
+diff -NurpP --minimal linux-2.6.16.13/security/commoncap.c linux-2.6.16.13-vs2.0.2-rc19/security/commoncap.c
+--- linux-2.6.16.13/security/commoncap.c	2006-02-18 14:40:44 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/security/commoncap.c	2006-04-28 01:59:36 +0200
 @@ -143,7 +143,7 @@ void cap_bprm_apply_creds (struct linux_
  	/* Derived from fs/exec.c:compute_creds. */
  	kernel_cap_t new_permitted, working;
@@ -21701,14 +21242,13 @@
  {
 -	if ((type != 3 && type != 10) && !capable(CAP_SYS_ADMIN))
 +	if ((type != 3 && type != 10) &&
-+		!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SYSLOG))
++		!vx_capable(CAP_SYS_ADMIN, VXC_SYSLOG))
  		return -EPERM;
  	return 0;
  }
-diff --git a/security/security.c b/security/security.c
-index f693e1f..8bbe110 100644
---- a/security/security.c
-+++ b/security/security.c
+diff -NurpP --minimal linux-2.6.16.13/security/security.c linux-2.6.16.13-vs2.0.2-rc19/security/security.c
+--- linux-2.6.16.13/security/security.c	2006-02-18 14:40:44 +0100
++++ linux-2.6.16.13-vs2.0.2-rc19/security/security.c	2006-04-28 01:59:36 +0200
 @@ -186,6 +186,8 @@ int mod_unreg_security(const char *name,
   */
  int capable(int cap)
@@ -21718,28 +21258,11 @@
  	if (security_ops->capable(current, cap)) {
  		/* capability denied */
  		return 0;
-@@ -196,9 +198,24 @@ int capable(int cap)
+@@ -196,6 +198,7 @@ int capable(int cap)
  	return 1;
  }
  
-+int vx_capable(int cap, int ccap)
-+{
-+	if (security_ops->capable(current, cap)) {
-+		/* capability denied */
-+		return 0;
-+	}
-+	if (!vx_ccaps(ccap))
-+		return 0;
-+
-+	/* capability granted */
-+	current->flags |= PF_SUPERPRIV;
-+	return 1;
-+}
 +
  EXPORT_SYMBOL_GPL(register_security);
  EXPORT_SYMBOL_GPL(unregister_security);
  EXPORT_SYMBOL_GPL(mod_reg_security);
- EXPORT_SYMBOL_GPL(mod_unreg_security);
- EXPORT_SYMBOL(capable);
-+EXPORT_SYMBOL(vx_capable);
- EXPORT_SYMBOL(security_ops);



More information about the Kernel-svn-changes mailing list