[kernel] r8434 - in dists/trunk/linux-2.6/debian/patches: features/all/vserver series

Bastian Blank waldi at alioth.debian.org
Mon Apr 9 14:59:28 UTC 2007


Author: waldi
Date: Mon Apr  9 14:59:27 2007
New Revision: 8434

Added:
   dists/trunk/linux-2.6/debian/patches/features/all/vserver/vs2.2.0.patch
      - copied, changed from r8347, dists/trunk/linux-2.6/debian/patches/features/all/vserver/vs2.2.0-rc15.patch
Removed:
   dists/trunk/linux-2.6/debian/patches/features/all/vserver/vs2.2.0-rc15.patch
Modified:
   dists/trunk/linux-2.6/debian/patches/series/1~experimental.1-extra
Log:
Update vserver patch to 2.2.0.

* debian/patches/features/all/vserver/vs2.2.0.patch: Add.
* debian/patches/features/all/vserver/vs2.2.0-rc15.patch: Remove.
* debian/patches/series/1~experimental.1-extra: Update.


Copied: dists/trunk/linux-2.6/debian/patches/features/all/vserver/vs2.2.0.patch (from r8347, dists/trunk/linux-2.6/debian/patches/features/all/vserver/vs2.2.0-rc15.patch)
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/vserver/vs2.2.0-rc15.patch	(original)
+++ dists/trunk/linux-2.6/debian/patches/features/all/vserver/vs2.2.0.patch	Mon Apr  9 14:59:27 2007
@@ -1,5 +1,5 @@
---- linux-2.6.20.1/Documentation/vserver/debug.txt	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/Documentation/vserver/debug.txt	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/Documentation/vserver/debug.txt	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/Documentation/vserver/debug.txt	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,154 @@
 +
 +debug_cvirt:
@@ -155,8 +155,8 @@
 + m 2^m	"vx_acc_page[%5d,%s,%2d]: %5d%s"
 +	"vx_acc_pages[%5d,%s,%2d]: %5d += %5d"
 +	"vx_pages_avail[%5d,%s,%2d]: %5ld > %5d + %5d"
---- linux-2.6.20.1/arch/alpha/Kconfig	2007-02-06 02:59:58 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/Kconfig	2007-02-06 02:59:58 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/Kconfig	2007-04-01 17:29:38 +0200
 @@ -640,6 +640,8 @@ source "arch/alpha/oprofile/Kconfig"
  
  source "arch/alpha/Kconfig.debug"
@@ -166,8 +166,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/alpha/kernel/asm-offsets.c	2006-02-15 13:54:10 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/kernel/asm-offsets.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/kernel/asm-offsets.c	2006-02-15 13:54:10 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/kernel/asm-offsets.c	2007-04-01 17:29:50 +0200
 @@ -36,6 +36,7 @@ void foo(void)
  	DEFINE(PT_PTRACED, PT_PTRACED);
  	DEFINE(CLONE_VM, CLONE_VM);
@@ -176,8 +176,8 @@
  	DEFINE(SIGCHLD, SIGCHLD);
  	BLANK();
  
---- linux-2.6.20.1/arch/alpha/kernel/entry.S	2006-11-30 21:18:23 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/kernel/entry.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/kernel/entry.S	2006-11-30 21:18:23 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/kernel/entry.S	2007-04-01 17:30:01 +0200
 @@ -644,7 +644,7 @@ kernel_thread:
  	stq	$2, 152($sp)		/* HAE */
  
@@ -219,8 +219,8 @@
  	ret
  .end sys_getxpid
  
---- linux-2.6.20.1/arch/alpha/kernel/osf_sys.c	2007-02-06 02:59:58 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/kernel/osf_sys.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/kernel/osf_sys.c	2007-02-06 02:59:58 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/kernel/osf_sys.c	2007-04-01 17:29:43 +0200
 @@ -885,7 +885,7 @@ osf_gettimeofday(struct timeval32 __user
  {
  	if (tv) {
@@ -230,8 +230,8 @@
  		if (put_tv32(tv, &ktv))
  			return -EFAULT;
  	}
---- linux-2.6.20.1/arch/alpha/kernel/ptrace.c	2006-04-09 13:49:39 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/kernel/ptrace.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/kernel/ptrace.c	2006-04-09 13:49:39 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -15,6 +15,7 @@
  #include <linux/slab.h>
  #include <linux/security.h>
@@ -252,8 +252,8 @@
  	if (request == PTRACE_ATTACH) {
  		ret = ptrace_attach(child);
  		goto out;
---- linux-2.6.20.1/arch/alpha/kernel/semaphore.c	2004-08-14 12:55:32 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/kernel/semaphore.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/kernel/semaphore.c	2004-08-14 12:55:32 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/kernel/semaphore.c	2007-04-01 17:29:40 +0200
 @@ -68,8 +68,8 @@ __down_failed(struct semaphore *sem)
  	DECLARE_WAITQUEUE(wait, tsk);
  
@@ -287,8 +287,8 @@
  #endif
  
  	tsk->state = TASK_INTERRUPTIBLE;
---- linux-2.6.20.1/arch/alpha/kernel/systbls.S	2006-11-30 21:18:23 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/kernel/systbls.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/kernel/systbls.S	2006-11-30 21:18:23 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/kernel/systbls.S	2007-04-01 17:29:39 +0200
 @@ -446,7 +446,7 @@ sys_call_table:
  	.quad sys_stat64			/* 425 */
  	.quad sys_lstat64
@@ -298,8 +298,8 @@
  	.quad sys_ni_syscall			/* sys_mbind */
  	.quad sys_ni_syscall			/* sys_get_mempolicy */
  	.quad sys_ni_syscall			/* sys_set_mempolicy */
---- linux-2.6.20.1/arch/alpha/kernel/traps.c	2006-09-20 16:57:57 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/kernel/traps.c	2006-09-20 16:57:57 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -182,7 +182,8 @@ die_if_kernel(char * str, struct pt_regs
  #ifdef CONFIG_SMP
  	printk("CPU %d ", hard_smp_processor_id());
@@ -310,18 +310,21 @@
  	dik_show_regs(regs, r9_15);
  	dik_show_trace((unsigned long *)(regs+1));
  	dik_show_code((unsigned int *)regs->pc);
---- linux-2.6.20.1/arch/alpha/mm/init.c	2006-11-30 21:18:23 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/alpha/mm/init.c	2007-02-06 03:05:21 +0100
-@@ -20,6 +20,7 @@
- #include <linux/init.h>
- #include <linux/bootmem.h> /* max_low_pfn */
- #include <linux/vmalloc.h>
-+#include <linux/pagemap.h>
- 
- #include <asm/system.h>
- #include <asm/uaccess.h>
---- linux-2.6.20.1/arch/arm/Kconfig	2007-02-06 02:59:58 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/arm/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/alpha/mm/fault.c	2007-02-06 02:59:58 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/alpha/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -198,8 +198,8 @@ do_page_fault(unsigned long address, uns
+ 		down_read(&mm->mmap_sem);
+ 		goto survive;
+ 	}
+-	printk(KERN_ALERT "VM: killing process %s(%d)\n",
+-	       current->comm, current->pid);
++	printk(KERN_ALERT "VM: killing process %s(%d:#%u)\n",
++	       current->comm, current->pid, current->xid);
+ 	if (!user_mode(regs))
+ 		goto no_context;
+ 	do_exit(SIGKILL);
+--- linux-2.6.20.4/arch/arm/Kconfig	2007-02-06 02:59:58 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/arm/Kconfig	2007-04-01 17:29:38 +0200
 @@ -970,6 +970,8 @@ source "arch/arm/oprofile/Kconfig"
  
  source "arch/arm/Kconfig.debug"
@@ -331,8 +334,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/arm/kernel/calls.S	2007-02-06 02:59:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/arm/kernel/calls.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/arm/kernel/calls.S	2007-02-06 02:59:59 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/arm/kernel/calls.S	2007-04-01 17:29:39 +0200
 @@ -322,7 +322,7 @@
  /* 310 */	CALL(sys_request_key)
  		CALL(sys_keyctl)
@@ -342,8 +345,8 @@
  		CALL(sys_ioprio_set)
  /* 315 */	CALL(sys_ioprio_get)
  		CALL(sys_inotify_init)
---- linux-2.6.20.1/arch/arm/kernel/process.c	2007-02-06 02:59:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/arm/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/arm/kernel/process.c	2007-02-06 02:59:59 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/arm/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -246,7 +246,8 @@ void __show_regs(struct pt_regs *regs)
  void show_regs(struct pt_regs * regs)
  {
@@ -364,8 +367,8 @@
  }
  EXPORT_SYMBOL(kernel_thread);
  
---- linux-2.6.20.1/arch/arm/kernel/traps.c	2007-02-06 02:59:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/arm/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/arm/kernel/traps.c	2007-02-06 02:59:59 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/arm/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -206,8 +206,8 @@ static void __die(const char *str, int e
  	printk("Internal error: %s: %x [#%d]\n", str, err, ++die_counter);
  	print_modules();
@@ -377,8 +380,20 @@
  
  	if (!user_mode(regs) || in_interrupt()) {
  		dump_mem("Stack: ", regs->ARM_sp,
---- linux-2.6.20.1/arch/arm26/Kconfig	2007-02-06 03:00:02 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/arm26/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/arm/mm/fault.c	2007-02-06 03:00:01 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/arm/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -267,7 +267,8 @@ do_page_fault(unsigned long addr, unsign
+ 		 * happened to us that made us unable to handle
+ 		 * the page fault gracefully.
+ 		 */
+-		printk("VM: killing process %s\n", tsk->comm);
++		printk("VM: killing process %s(%d:#%u)\n",
++			tsk->comm, tsk->pid, tsk->xid);
+ 		do_exit(SIGKILL);
+ 		return 0;
+ 
+--- linux-2.6.20.4/arch/arm26/Kconfig	2007-02-06 03:00:02 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/arm26/Kconfig	2007-04-01 17:29:38 +0200
 @@ -242,6 +242,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/arm26/Kconfig.debug"
@@ -388,8 +403,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/arm26/kernel/calls.S	2005-03-02 12:38:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/arm26/kernel/calls.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/arm26/kernel/calls.S	2005-03-02 12:38:19 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/arm26/kernel/calls.S	2007-04-01 17:29:39 +0200
 @@ -257,6 +257,11 @@ __syscall_start:
  		.long	sys_lremovexattr
  		.long	sys_fremovexattr
@@ -402,8 +417,8 @@
  __syscall_end:
  
  		.rept	NR_syscalls - (__syscall_end - __syscall_start) / 4
---- linux-2.6.20.1/arch/arm26/kernel/process.c	2006-09-20 16:57:57 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/arm26/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/arm26/kernel/process.c	2006-09-20 16:57:57 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/arm26/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -365,7 +365,8 @@ pid_t kernel_thread(int (*fn)(void *), v
          regs.ARM_r3 = (unsigned long)do_exit;
          regs.ARM_pc = (unsigned long)kernel_thread_helper | MODE_SVC26;
@@ -414,8 +429,8 @@
  }
  EXPORT_SYMBOL(kernel_thread);
  
---- linux-2.6.20.1/arch/arm26/kernel/traps.c	2006-09-20 16:57:57 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/arm26/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/arm26/kernel/traps.c	2006-09-20 16:57:57 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/arm26/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -185,8 +185,9 @@ NORET_TYPE void die(const char *str, str
  	printk("Internal error: %s: %x\n", str, err);
  	printk("CPU: %d\n", smp_processor_id());
@@ -428,8 +443,8 @@
  
  	if (!user_mode(regs) || in_interrupt()) {
  		__dump_stack(tsk, (unsigned long)(regs + 1));
---- linux-2.6.20.1/arch/cris/Kconfig	2007-02-06 03:00:02 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/cris/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/cris/Kconfig	2007-02-06 03:00:02 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/cris/Kconfig	2007-04-01 17:29:38 +0200
 @@ -193,6 +193,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/cris/Kconfig.debug"
@@ -439,8 +454,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/cris/arch-v10/kernel/process.c	2006-09-20 16:57:57 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/cris/arch-v10/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/cris/arch-v10/kernel/process.c	2006-09-20 16:57:57 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/cris/arch-v10/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -103,7 +103,8 @@ int kernel_thread(int (*fn)(void *), voi
  	regs.dccr = 1 << I_DCCR_BITNR;
  
@@ -451,8 +466,8 @@
  }
  
  /* setup the child's kernel stack with a pt_regs and switch_stack on it.
---- linux-2.6.20.1/arch/cris/arch-v32/kernel/process.c	2006-09-20 16:57:57 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/cris/arch-v32/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/cris/arch-v32/kernel/process.c	2006-09-20 16:57:57 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/cris/arch-v32/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -120,7 +120,8 @@ kernel_thread(int (*fn)(void *), void * 
  	regs.ccs = 1 << (I_CCS_BITNR + CCS_SHIFT);
  
@@ -463,18 +478,8 @@
  }
  
  /*
---- linux-2.6.20.1/arch/cris/kernel/irq.c	2006-09-20 16:57:57 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/cris/kernel/irq.c	2007-02-06 03:05:21 +0100
-@@ -92,6 +92,7 @@ skip:
- asmlinkage void do_IRQ(int irq, struct pt_regs * regs)
- {
- 	unsigned long sp;
-+
- 	irq_enter();
- 	sp = rdsp();
- 	if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) {
---- linux-2.6.20.1/arch/frv/kernel/kernel_thread.S	2005-03-02 12:38:20 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/frv/kernel/kernel_thread.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/frv/kernel/kernel_thread.S	2005-03-02 12:38:20 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/frv/kernel/kernel_thread.S	2007-04-01 17:29:50 +0200
 @@ -13,6 +13,8 @@
  #include <asm/unistd.h>
  
@@ -493,8 +498,8 @@
  	sethi.p		#0xe4e4,gr9		; second syscall arg	[newsp]
  	setlo		#0xe4e4,gr9
  	setlos.p	#0,gr10			; third syscall arg	[parent_tidptr]
---- linux-2.6.20.1/arch/h8300/Kconfig	2007-02-06 03:00:03 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/h8300/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/h8300/Kconfig	2007-02-06 03:00:03 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/h8300/Kconfig	2007-04-01 17:29:38 +0200
 @@ -207,6 +207,8 @@ source "fs/Kconfig"
  
  source "arch/h8300/Kconfig.debug"
@@ -504,8 +509,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/h8300/kernel/process.c	2006-09-20 16:57:58 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/h8300/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/h8300/kernel/process.c	2006-09-20 16:57:58 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/h8300/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -134,7 +134,7 @@ int kernel_thread(int (*fn)(void *), voi
  
  	fs = get_fs();
@@ -515,8 +520,8 @@
  	__asm__("mov.l sp,er3\n\t"
  		"sub.l er2,er2\n\t"
  		"mov.l %2,er1\n\t"
---- linux-2.6.20.1/arch/i386/Kconfig	2007-02-06 03:00:03 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/i386/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/i386/Kconfig	2007-02-06 03:00:03 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/i386/Kconfig	2007-04-01 17:29:38 +0200
 @@ -1214,6 +1214,8 @@ endmenu
  
  source "arch/i386/Kconfig.debug"
@@ -526,26 +531,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/i386/kernel/irq.c	2006-11-30 21:18:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/i386/kernel/irq.c	2007-02-06 03:05:21 +0100
-@@ -84,7 +84,6 @@ fastcall unsigned int do_IRQ(struct pt_r
- 		}
- 	}
- #endif
--
- #ifdef CONFIG_4KSTACKS
- 
- 	curctx = (union irq_ctx *) current_thread_info();
-@@ -124,7 +123,6 @@ fastcall unsigned int do_IRQ(struct pt_r
- 	} else
- #endif
- 		desc->handle_irq(irq, desc);
--
- 	irq_exit();
- 	set_irq_regs(old_regs);
- 	return 1;
---- linux-2.6.20.1/arch/i386/kernel/process.c	2007-02-06 03:00:06 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/i386/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/i386/kernel/process.c	2007-02-06 03:00:06 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/i386/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -294,8 +294,10 @@ void show_regs(struct pt_regs * regs)
  	unsigned long cr0 = 0L, cr2 = 0L, cr3 = 0L, cr4 = 0L;
  
@@ -569,8 +556,8 @@
  }
  EXPORT_SYMBOL(kernel_thread);
  
---- linux-2.6.20.1/arch/i386/kernel/syscall_table.S	2006-11-30 21:18:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/i386/kernel/syscall_table.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/i386/kernel/syscall_table.S	2006-11-30 21:18:26 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/i386/kernel/syscall_table.S	2007-04-01 17:29:39 +0200
 @@ -272,7 +272,7 @@ ENTRY(sys_call_table)
  	.long sys_tgkill	/* 270 */
  	.long sys_utimes
@@ -580,8 +567,8 @@
  	.long sys_mbind
  	.long sys_get_mempolicy
  	.long sys_set_mempolicy
---- linux-2.6.20.1/arch/i386/kernel/sysenter.c	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/i386/kernel/sysenter.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/i386/kernel/sysenter.c	2007-03-10 20:33:59 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/i386/kernel/sysenter.c	2007-04-01 17:29:47 +0200
 @@ -17,6 +17,7 @@
  #include <linux/elf.h>
  #include <linux/mm.h>
@@ -599,8 +586,8 @@
  up_fail:
  	up_write(&mm->mmap_sem);
  	return ret;
---- linux-2.6.20.1/arch/i386/kernel/traps.c	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/i386/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/i386/kernel/traps.c	2007-02-06 03:00:07 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/i386/kernel/traps.c	2007-04-01 17:29:48 +0200
 @@ -56,6 +56,8 @@
  #include <asm/stacktrace.h>
  
@@ -642,9 +629,21 @@
  			/* Executive summary in case the oops scrolled away */
  			esp = (unsigned long) (&regs->esp);
  			savesegment(ss, ss);
---- linux-2.6.20.1/arch/ia64/Kconfig	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/Kconfig	2007-02-06 03:05:21 +0100
-@@ -568,6 +568,8 @@ endmenu
+--- linux-2.6.20.4/arch/i386/mm/fault.c	2007-02-06 03:00:07 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/i386/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -594,7 +594,8 @@ out_of_memory:
+ 		down_read(&mm->mmap_sem);
+ 		goto survive;
+ 	}
+-	printk("VM: killing process %s\n", tsk->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		tsk->comm, tsk->pid, tsk->xid);
+ 	if (error_code & 4)
+ 		do_exit(SIGKILL);
+ 	goto no_context;
+--- linux-2.6.20.4/arch/ia64/Kconfig	2007-03-10 20:33:59 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/Kconfig	2007-04-01 17:29:38 +0200
+@@ -569,6 +569,8 @@ endmenu
  
  source "arch/ia64/Kconfig.debug"
  
@@ -653,8 +652,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/ia64/ia32/binfmt_elf32.c	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/ia32/binfmt_elf32.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/ia32/binfmt_elf32.c	2007-02-06 03:00:07 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/ia32/binfmt_elf32.c	2007-04-01 17:29:47 +0200
 @@ -238,7 +238,8 @@ ia32_setup_arg_pages (struct linux_binpr
  			kmem_cache_free(vm_area_cachep, mpnt);
  			return ret;
@@ -665,8 +664,8 @@
  	}
  
  	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
---- linux-2.6.20.1/arch/ia64/ia32/ia32_entry.S	2006-06-18 04:51:55 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/ia32/ia32_entry.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/ia32/ia32_entry.S	2006-06-18 04:51:55 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/ia32/ia32_entry.S	2007-04-01 17:29:39 +0200
 @@ -483,7 +483,7 @@ ia32_syscall_table:
   	data8 sys_tgkill	/* 270 */
   	data8 compat_sys_utimes
@@ -676,8 +675,8 @@
    	data8 sys_ni_syscall
   	data8 sys_ni_syscall	/* 275 */
    	data8 sys_ni_syscall
---- linux-2.6.20.1/arch/ia64/ia32/sys_ia32.c	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/ia32/sys_ia32.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/ia32/sys_ia32.c	2007-02-06 03:00:07 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/ia32/sys_ia32.c	2007-04-01 17:29:43 +0200
 @@ -1182,7 +1182,7 @@ sys32_gettimeofday (struct compat_timeva
  {
  	if (tv) {
@@ -687,8 +686,8 @@
  		if (put_tv32(tv, &ktv))
  			return -EFAULT;
  	}
---- linux-2.6.20.1/arch/ia64/kernel/asm-offsets.c	2006-09-20 16:57:58 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/kernel/asm-offsets.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/kernel/asm-offsets.c	2006-09-20 16:57:58 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/kernel/asm-offsets.c	2007-04-01 17:29:50 +0200
 @@ -191,6 +191,7 @@ void foo(void)
      /* for assembly files which can't include sched.h: */
  	DEFINE(IA64_CLONE_VFORK, CLONE_VFORK);
@@ -697,8 +696,8 @@
  
  	BLANK();
  	DEFINE(IA64_CPUINFO_NSEC_PER_CYC_OFFSET,
---- linux-2.6.20.1/arch/ia64/kernel/entry.S	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/kernel/entry.S	2007-02-06 03:07:01 +0100
+--- linux-2.6.20.4/arch/ia64/kernel/entry.S	2007-02-06 03:00:07 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/kernel/entry.S	2007-04-01 17:29:39 +0200
 @@ -1576,7 +1576,7 @@ sys_call_table:
  	data8 sys_mq_notify
  	data8 sys_mq_getsetattr
@@ -708,8 +707,8 @@
  	data8 sys_waitid			// 1270
  	data8 sys_add_key
  	data8 sys_request_key
---- linux-2.6.20.1/arch/ia64/kernel/perfmon.c	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/kernel/perfmon.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/kernel/perfmon.c	2007-02-06 03:00:07 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/kernel/perfmon.c	2007-04-01 17:29:47 +0200
 @@ -41,6 +41,7 @@
  #include <linux/capability.h>
  #include <linux/rcupdate.h>
@@ -727,8 +726,8 @@
  	vm_stat_account(vma->vm_mm, vma->vm_flags, vma->vm_file,
  							vma_pages(vma));
  	up_write(&task->mm->mmap_sem);
---- linux-2.6.20.1/arch/ia64/kernel/process.c	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/kernel/process.c	2007-02-06 03:00:07 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -105,7 +105,8 @@ show_regs (struct pt_regs *regs)
  	unsigned long ip = regs->cr_iip + ia64_psr(regs)->ri;
  
@@ -749,8 +748,8 @@
  }
  EXPORT_SYMBOL(kernel_thread);
  
---- linux-2.6.20.1/arch/ia64/kernel/ptrace.c	2006-09-20 16:57:58 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/kernel/ptrace.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/kernel/ptrace.c	2006-09-20 16:57:58 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -17,6 +17,7 @@
  #include <linux/security.h>
  #include <linux/audit.h>
@@ -769,8 +768,8 @@
  	ret = -EPERM;
  	if (pid == 1)		/* no messing around with init! */
  		goto out_tsk;
---- linux-2.6.20.1/arch/ia64/kernel/traps.c	2007-02-06 03:00:07 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/kernel/traps.c	2007-02-06 03:09:13 +0100
+--- linux-2.6.20.4/arch/ia64/kernel/traps.c	2007-02-06 03:00:07 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -106,8 +106,9 @@ die (const char *str, struct pt_regs *re
  	put_cpu();
  
@@ -795,8 +794,8 @@
  			}
  		}
  	}
---- linux-2.6.20.1/arch/ia64/mm/fault.c	2006-11-30 21:18:27 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/mm/fault.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/mm/fault.c	2006-11-30 21:18:27 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/mm/fault.c	2007-04-01 17:29:17 +0200
 @@ -10,6 +10,7 @@
  #include <linux/smp_lock.h>
  #include <linux/interrupt.h>
@@ -805,8 +804,8 @@
  
  #include <asm/pgtable.h>
  #include <asm/processor.h>
---- linux-2.6.20.1/arch/ia64/sn/kernel/xpc_main.c	2007-02-06 03:00:08 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ia64/sn/kernel/xpc_main.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ia64/sn/kernel/xpc_main.c	2007-02-06 03:00:08 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ia64/sn/kernel/xpc_main.c	2007-04-01 17:30:05 +0200
 @@ -108,6 +108,7 @@ static ctl_table xpc_sys_xpc_hb_dir[] = 
  		0644,
  		NULL,
@@ -831,18 +830,8 @@
  		&sysctl_intvec,
  		NULL,
  		&xpc_disengage_request_min_timelimit,
---- linux-2.6.20.1/arch/m32r/kernel/irq.c	2006-11-30 21:18:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m32r/kernel/irq.c	2007-02-06 03:05:21 +0100
-@@ -78,6 +78,7 @@ skip:
- asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs)
- {
- 	struct pt_regs *old_regs;
-+
- 	old_regs = set_irq_regs(regs);
- 	irq_enter();
- 
---- linux-2.6.20.1/arch/m32r/kernel/process.c	2006-09-20 16:57:58 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m32r/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m32r/kernel/process.c	2007-03-10 20:33:59 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/m32r/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -211,8 +211,8 @@ int kernel_thread(int (*fn)(void *), voi
  	regs.psw = M32R_PSW_BIE;
  
@@ -854,8 +843,8 @@
  }
  
  /*
---- linux-2.6.20.1/arch/m32r/kernel/traps.c	2006-11-30 21:18:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m32r/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m32r/kernel/traps.c	2006-11-30 21:18:28 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/m32r/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -195,8 +195,9 @@ static void show_registers(struct pt_reg
  	} else {
  		printk("SPI: %08lx\n", sp);
@@ -868,8 +857,8 @@
  
  	/*
  	 * When in-kernel, we also print out the stack and code at the
---- linux-2.6.20.1/arch/m68k/Kconfig	2007-02-06 03:00:08 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m68k/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m68k/Kconfig	2007-02-06 03:00:08 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/m68k/Kconfig	2007-04-01 17:29:38 +0200
 @@ -662,6 +662,8 @@ source "fs/Kconfig"
  
  source "arch/m68k/Kconfig.debug"
@@ -879,8 +868,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/m68k/kernel/process.c	2006-11-30 21:18:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m68k/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m68k/kernel/process.c	2006-11-30 21:18:28 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/m68k/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -159,7 +159,8 @@ int kernel_thread(int (*fn)(void *), voi
  
  	{
@@ -891,8 +880,8 @@
  
  	retval = __NR_clone;
  	__asm__ __volatile__
---- linux-2.6.20.1/arch/m68k/kernel/ptrace.c	2006-09-20 16:57:58 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m68k/kernel/ptrace.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m68k/kernel/ptrace.c	2006-09-20 16:57:58 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/m68k/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -19,6 +19,7 @@
  #include <linux/ptrace.h>
  #include <linux/user.h>
@@ -910,8 +899,8 @@
  
  	return ret;
  out_eio:
---- linux-2.6.20.1/arch/m68k/kernel/traps.c	2006-11-30 21:18:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m68k/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m68k/kernel/traps.c	2006-11-30 21:18:28 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/m68k/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -899,8 +899,8 @@ void show_registers(struct pt_regs *regs
  	printk("d4: %08lx    d5: %08lx    a0: %08lx    a1: %08lx\n",
  	       regs->d4, regs->d5, regs->a0, regs->a1);
@@ -923,8 +912,8 @@
  	addr = (unsigned long)&fp->un;
  	printk("Frame format=%X ", regs->format);
  	switch (regs->format) {
---- linux-2.6.20.1/arch/m68knommu/Kconfig	2007-02-06 03:00:08 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m68knommu/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m68knommu/Kconfig	2007-02-06 03:00:08 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/m68knommu/Kconfig	2007-04-01 17:29:38 +0200
 @@ -671,6 +671,8 @@ source "fs/Kconfig"
  
  source "arch/m68knommu/Kconfig.debug"
@@ -934,8 +923,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/m68knommu/kernel/process.c	2007-02-06 03:00:08 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m68knommu/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m68knommu/kernel/process.c	2007-02-06 03:00:08 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/m68knommu/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -122,7 +122,7 @@ void show_regs(struct pt_regs * regs)
  int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
  {
@@ -945,8 +934,8 @@
  	mm_segment_t fs;
  
  	fs = get_fs();
---- linux-2.6.20.1/arch/m68knommu/kernel/traps.c	2007-02-06 03:00:08 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/m68knommu/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/m68knommu/kernel/traps.c	2007-02-06 03:00:08 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/m68knommu/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -80,8 +80,9 @@ void die_if_kernel(char *str, struct pt_
  	printk(KERN_EMERG "d4: %08lx    d5: %08lx    a0: %08lx    a1: %08lx\n",
  	       fp->d4, fp->d5, fp->a0, fp->a1);
@@ -959,8 +948,8 @@
  	show_stack(NULL, (unsigned long *)fp);
  	do_exit(SIGSEGV);
  }
---- linux-2.6.20.1/arch/mips/Kconfig	2007-02-06 03:00:08 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/Kconfig	2007-02-06 03:00:08 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/Kconfig	2007-04-01 17:29:38 +0200
 @@ -2084,6 +2084,8 @@ source "arch/mips/oprofile/Kconfig"
  
  source "arch/mips/Kconfig.debug"
@@ -970,8 +959,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/mips/kernel/linux32.c	2007-02-06 03:00:11 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/kernel/linux32.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/kernel/linux32.c	2007-02-06 03:00:11 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/kernel/linux32.c	2007-04-01 17:29:43 +0200
 @@ -300,7 +300,7 @@ sys32_gettimeofday(struct compat_timeval
  {
  	if (tv) {
@@ -981,8 +970,8 @@
  		if (put_tv32(tv, &ktv))
  			return -EFAULT;
  	}
---- linux-2.6.20.1/arch/mips/kernel/process.c	2006-11-30 21:18:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/kernel/process.c	2006-11-30 21:18:29 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -271,7 +271,8 @@ long kernel_thread(int (*fn)(void *), vo
  #endif
  
@@ -993,8 +982,8 @@
  }
  
  /*
---- linux-2.6.20.1/arch/mips/kernel/ptrace.c	2006-11-30 21:18:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/kernel/ptrace.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/kernel/ptrace.c	2006-11-30 21:18:29 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -26,6 +26,7 @@
  #include <linux/user.h>
  #include <linux/security.h>
@@ -1013,8 +1002,8 @@
  	switch (request) {
  	/* when I and D space are separate, these will need to be fixed. */
  	case PTRACE_PEEKTEXT: /* read word at location addr. */
---- linux-2.6.20.1/arch/mips/kernel/scall32-o32.S	2007-02-06 03:00:11 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/kernel/scall32-o32.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/kernel/scall32-o32.S	2007-02-06 03:00:11 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/kernel/scall32-o32.S	2007-04-01 17:29:39 +0200
 @@ -619,7 +619,7 @@ einval:	li	v0, -EINVAL
  	sys	sys_mq_timedreceive	5
  	sys	sys_mq_notify		2	/* 4275 */
@@ -1024,8 +1013,8 @@
  	sys	sys_waitid		5
  	sys	sys_ni_syscall		0	/* available, was setaltroot */
  	sys	sys_add_key		5	/* 4280 */
---- linux-2.6.20.1/arch/mips/kernel/scall64-64.S	2007-02-06 03:00:11 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/kernel/scall64-64.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/kernel/scall64-64.S	2007-02-06 03:00:11 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/kernel/scall64-64.S	2007-04-01 17:29:39 +0200
 @@ -434,7 +434,7 @@ sys_call_table:
  	PTR	sys_mq_timedreceive
  	PTR	sys_mq_notify
@@ -1035,8 +1024,8 @@
  	PTR	sys_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key
---- linux-2.6.20.1/arch/mips/kernel/scall64-n32.S	2007-02-06 03:00:11 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/kernel/scall64-n32.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/kernel/scall64-n32.S	2007-02-06 03:00:11 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/kernel/scall64-n32.S	2007-04-01 17:29:39 +0200
 @@ -360,7 +360,7 @@ EXPORT(sysn32_call_table)
  	PTR	compat_sys_mq_timedreceive
  	PTR	compat_sys_mq_notify
@@ -1046,8 +1035,8 @@
  	PTR	sysn32_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key
---- linux-2.6.20.1/arch/mips/kernel/scall64-o32.S	2007-02-06 03:00:11 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/kernel/scall64-o32.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/kernel/scall64-o32.S	2007-02-06 03:00:11 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/kernel/scall64-o32.S	2007-04-01 17:29:39 +0200
 @@ -482,7 +482,7 @@ sys_call_table:
  	PTR	compat_sys_mq_timedreceive
  	PTR	compat_sys_mq_notify		/* 4275 */
@@ -1057,8 +1046,8 @@
  	PTR	sys32_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key			/* 4280 */
---- linux-2.6.20.1/arch/mips/kernel/traps.c	2007-02-06 03:00:11 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/mips/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/kernel/traps.c	2007-02-06 03:00:11 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -299,8 +299,9 @@ void show_registers(struct pt_regs *regs
  {
  	show_regs(regs);
@@ -1071,8 +1060,20 @@
  	show_stacktrace(current, regs);
  	show_code((unsigned int *) regs->cp0_epc);
  	printk("\n");
---- linux-2.6.20.1/arch/parisc/Kconfig	2007-02-06 03:00:12 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/parisc/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/mips/mm/fault.c	2007-02-06 03:00:11 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/mips/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -180,7 +180,8 @@ out_of_memory:
+ 		down_read(&mm->mmap_sem);
+ 		goto survive;
+ 	}
+-	printk("VM: killing process %s\n", tsk->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		tsk->comm, tsk->pid, tsk->xid);
+ 	if (user_mode(regs))
+ 		do_exit(SIGKILL);
+ 	goto no_context;
+--- linux-2.6.20.4/arch/parisc/Kconfig	2007-02-06 03:00:12 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/parisc/Kconfig	2007-04-01 17:29:38 +0200
 @@ -265,6 +265,8 @@ source "arch/parisc/oprofile/Kconfig"
  
  source "arch/parisc/Kconfig.debug"
@@ -1082,8 +1083,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/parisc/kernel/entry.S	2006-11-30 21:18:30 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/parisc/kernel/entry.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/parisc/kernel/entry.S	2006-11-30 21:18:30 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/parisc/kernel/entry.S	2007-04-01 17:29:50 +0200
 @@ -761,6 +761,7 @@ fault_vector_11:
  
  #define CLONE_VM 0x100	/* Must agree with <linux/sched.h> */
@@ -1092,8 +1093,8 @@
  
  	.export __kernel_thread, code
  	.import do_fork
---- linux-2.6.20.1/arch/parisc/kernel/process.c	2006-11-30 21:18:30 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/parisc/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/parisc/kernel/process.c	2006-11-30 21:18:30 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/parisc/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -173,7 +173,7 @@ pid_t kernel_thread(int (*fn)(void *), v
  	 *	  kernel_thread can become a #define.
  	 */
@@ -1103,8 +1104,8 @@
  }
  EXPORT_SYMBOL(kernel_thread);
  
---- linux-2.6.20.1/arch/parisc/kernel/sys_parisc32.c	2006-11-30 21:18:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/parisc/kernel/sys_parisc32.c	2007-02-15 00:05:56 +0100
+--- linux-2.6.20.4/arch/parisc/kernel/sys_parisc32.c	2006-11-30 21:18:31 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/parisc/kernel/sys_parisc32.c	2007-04-01 17:29:43 +0200
 @@ -204,11 +204,11 @@ static inline long get_ts32(struct times
  asmlinkage int
  sys32_gettimeofday(struct compat_timeval __user *tv, struct timezone __user *tz)
@@ -1127,8 +1128,8 @@
  		val.uptime = jiffies / HZ;
  
  		val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
---- linux-2.6.20.1/arch/parisc/kernel/syscall_table.S	2006-11-30 21:18:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/parisc/kernel/syscall_table.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/parisc/kernel/syscall_table.S	2006-11-30 21:18:31 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/parisc/kernel/syscall_table.S	2007-04-01 17:29:39 +0200
 @@ -368,7 +368,7 @@
  	ENTRY_COMP(mbind)		/* 260 */
  	ENTRY_COMP(get_mempolicy)
@@ -1138,8 +1139,8 @@
  	ENTRY_SAME(add_key)
  	ENTRY_SAME(request_key)		/* 265 */
  	ENTRY_SAME(keyctl)
---- linux-2.6.20.1/arch/parisc/kernel/traps.c	2006-11-30 21:18:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/parisc/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/parisc/kernel/traps.c	2006-11-30 21:18:31 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/parisc/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -210,8 +210,9 @@ void die_if_kernel(char *str, struct pt_
  		if (err == 0)
  			return; /* STFU */
@@ -1163,8 +1164,8 @@
  	show_regs(regs);
  
  	if (in_interrupt())
---- linux-2.6.20.1/arch/parisc/mm/fault.c	2007-02-06 03:00:12 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/parisc/mm/fault.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/parisc/mm/fault.c	2007-02-06 03:00:12 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/parisc/mm/fault.c	2007-04-01 17:29:41 +0200
 @@ -213,8 +213,9 @@ bad_area:
  
  #ifdef PRINT_USER_FAULTS
@@ -1177,8 +1178,18 @@
  		if (vma) {
  			printk(KERN_DEBUG "vm_start = 0x%08lx, vm_end = 0x%08lx\n",
  					vma->vm_start, vma->vm_end);
---- linux-2.6.20.1/arch/powerpc/Kconfig	2007-02-06 03:00:12 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/Kconfig	2007-02-06 03:05:21 +0100
+@@ -264,7 +265,8 @@ no_context:
+ 
+   out_of_memory:
+ 	up_read(&mm->mmap_sem);
+-	printk(KERN_CRIT "VM: killing process %s\n", current->comm);
++	printk(KERN_CRIT "VM: killing process %s(%d:#%u)\n",
++		current->comm, current->pid, current->xid);
+ 	if (user_mode(regs))
+ 		do_exit(SIGKILL);
+ 	goto no_context;
+--- linux-2.6.20.4/arch/powerpc/Kconfig	2007-02-06 03:00:12 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/Kconfig	2007-04-01 17:29:39 +0200
 @@ -1193,6 +1193,8 @@ endmenu
  
  source "arch/powerpc/Kconfig.debug"
@@ -1188,8 +1199,8 @@
  source "security/Kconfig"
  
  config KEYS_COMPAT
---- linux-2.6.20.1/arch/powerpc/kernel/asm-offsets.c	2007-02-06 03:00:12 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/kernel/asm-offsets.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/kernel/asm-offsets.c	2007-02-06 03:00:12 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/kernel/asm-offsets.c	2007-04-01 17:29:50 +0200
 @@ -244,6 +244,7 @@ int main(void)
  
  	DEFINE(CLONE_VM, CLONE_VM);
@@ -1198,8 +1209,8 @@
  
  #ifndef CONFIG_PPC64
  	DEFINE(MM_PGD, offsetof(struct mm_struct, pgd));
---- linux-2.6.20.1/arch/powerpc/kernel/irq.c	2007-02-06 03:00:12 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/kernel/irq.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/kernel/irq.c	2007-02-06 03:00:12 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/kernel/irq.c	2007-04-01 17:29:22 +0200
 @@ -53,6 +53,7 @@
  #include <linux/mutex.h>
  #include <linux/bootmem.h>
@@ -1208,8 +1219,8 @@
  
  #include <asm/uaccess.h>
  #include <asm/system.h>
---- linux-2.6.20.1/arch/powerpc/kernel/misc_32.S	2006-11-30 21:18:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/kernel/misc_32.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/kernel/misc_32.S	2006-11-30 21:18:31 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/kernel/misc_32.S	2007-04-01 17:29:50 +0200
 @@ -749,7 +749,7 @@ _GLOBAL(kernel_thread)
  	mr	r30,r3		/* function */
  	mr	r31,r4		/* argument */
@@ -1219,8 +1230,8 @@
  	li	r4,0		/* new sp (unused) */
  	li	r0,__NR_clone
  	sc
---- linux-2.6.20.1/arch/powerpc/kernel/misc_64.S	2006-11-30 21:18:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/kernel/misc_64.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/kernel/misc_64.S	2006-11-30 21:18:31 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/kernel/misc_64.S	2007-04-01 17:29:50 +0200
 @@ -394,7 +394,7 @@ _GLOBAL(kernel_thread)
  	mr	r29,r3
  	mr	r30,r4
@@ -1230,8 +1241,8 @@
  	li	r4,0		/* new sp (unused) */
  	li	r0,__NR_clone
  	sc
---- linux-2.6.20.1/arch/powerpc/kernel/process.c	2006-11-30 21:18:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/kernel/process.c	2006-11-30 21:18:31 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/kernel/process.c	2007-04-01 17:29:41 +0200
 @@ -425,8 +425,9 @@ void show_regs(struct pt_regs * regs)
  	trap = TRAP(regs);
  	if (trap == 0x300 || trap == 0x600)
@@ -1244,8 +1255,8 @@
  
  #ifdef CONFIG_SMP
  	printk(" CPU: %d", smp_processor_id());
---- linux-2.6.20.1/arch/powerpc/kernel/sys_ppc32.c	2007-02-06 03:00:13 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/kernel/sys_ppc32.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/kernel/sys_ppc32.c	2007-02-06 03:00:13 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/kernel/sys_ppc32.c	2007-04-01 17:29:43 +0200
 @@ -276,7 +276,7 @@ asmlinkage long compat_sys_gettimeofday(
  {
  	if (tv) {
@@ -1255,8 +1266,8 @@
  		if (put_tv32(tv, &ktv))
  			return -EFAULT;
  	}
---- linux-2.6.20.1/arch/powerpc/kernel/traps.c	2007-02-06 03:00:13 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/kernel/traps.c	2007-02-06 03:00:13 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -844,8 +844,9 @@ void nonrecoverable_exception(struct pt_
  
  void trace_syscall(struct pt_regs *regs)
@@ -1269,8 +1280,8 @@
  	       regs->ccr&0x10000000?"Error=":"", regs->gpr[3], print_tainted());
  }
  
---- linux-2.6.20.1/arch/powerpc/kernel/vdso.c	2007-02-06 03:00:13 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/powerpc/kernel/vdso.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/kernel/vdso.c	2007-02-06 03:00:13 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/kernel/vdso.c	2007-04-01 17:29:47 +0200
 @@ -22,6 +22,7 @@
  #include <linux/elf.h>
  #include <linux/security.h>
@@ -1288,8 +1299,20 @@
  	up_write(&mm->mmap_sem);
  	return 0;
  
---- linux-2.6.20.1/arch/ppc/Kconfig	2007-02-06 03:00:16 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ppc/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/powerpc/mm/fault.c	2007-02-06 03:00:13 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/powerpc/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -391,7 +391,8 @@ out_of_memory:
+ 		down_read(&mm->mmap_sem);
+ 		goto survive;
+ 	}
+-	printk("VM: killing process %s\n", current->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		current->comm, current->pid, current->xid);
+ 	if (user_mode(regs))
+ 		do_exit(SIGKILL);
+ 	return SIGKILL;
+--- linux-2.6.20.4/arch/ppc/Kconfig	2007-02-06 03:00:16 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ppc/Kconfig	2007-04-01 17:29:39 +0200
 @@ -1445,6 +1445,8 @@ source "arch/powerpc/oprofile/Kconfig"
  
  source "arch/ppc/Kconfig.debug"
@@ -1299,8 +1322,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/ppc/kernel/asm-offsets.c	2006-09-20 16:58:01 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ppc/kernel/asm-offsets.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ppc/kernel/asm-offsets.c	2006-09-20 16:58:01 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/ppc/kernel/asm-offsets.c	2007-04-01 17:29:50 +0200
 @@ -121,6 +121,7 @@ main(void)
  	DEFINE(TRAP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, trap));
  	DEFINE(CLONE_VM, CLONE_VM);
@@ -1309,8 +1332,8 @@
  	DEFINE(MM_PGD, offsetof(struct mm_struct, pgd));
  
  	/* About the CPU features table */
---- linux-2.6.20.1/arch/ppc/kernel/misc.S	2006-11-30 21:18:32 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ppc/kernel/misc.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ppc/kernel/misc.S	2006-11-30 21:18:32 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ppc/kernel/misc.S	2007-04-01 17:29:50 +0200
 @@ -848,7 +848,7 @@ _GLOBAL(kernel_thread)
  	mr	r30,r3		/* function */
  	mr	r31,r4		/* argument */
@@ -1320,8 +1343,8 @@
  	li	r4,0		/* new sp (unused) */
  	li	r0,__NR_clone
  	sc
---- linux-2.6.20.1/arch/ppc/kernel/traps.c	2007-02-06 03:00:16 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/ppc/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ppc/kernel/traps.c	2007-02-06 03:00:16 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ppc/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -696,8 +696,9 @@ void nonrecoverable_exception(struct pt_
  
  void trace_syscall(struct pt_regs *regs)
@@ -1334,8 +1357,20 @@
  	       regs->ccr&0x10000000?"Error=":"", regs->gpr[3], print_tainted());
  }
  
---- linux-2.6.20.1/arch/s390/Kconfig	2007-02-06 03:00:17 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/s390/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/ppc/mm/fault.c	2006-11-30 21:18:32 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/ppc/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -296,7 +296,8 @@ out_of_memory:
+ 		down_read(&mm->mmap_sem);
+ 		goto survive;
+ 	}
+-	printk("VM: killing process %s\n", current->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		current->comm, current->pid, current->xid);
+ 	if (user_mode(regs))
+ 		do_exit(SIGKILL);
+ 	return SIGKILL;
+--- linux-2.6.20.4/arch/s390/Kconfig	2007-02-06 03:00:17 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/s390/Kconfig	2007-04-01 17:29:39 +0200
 @@ -522,6 +522,8 @@ endmenu
  
  source "arch/s390/Kconfig.debug"
@@ -1345,8 +1380,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/s390/kernel/compat_linux.c	2006-11-30 21:18:32 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/s390/kernel/compat_linux.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/s390/kernel/compat_linux.c	2006-11-30 21:18:32 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/s390/kernel/compat_linux.c	2007-04-01 17:29:43 +0200
 @@ -600,7 +600,7 @@ asmlinkage long sys32_gettimeofday(struc
  {
  	if (tv) {
@@ -1356,8 +1391,8 @@
  		if (put_tv32(tv, &ktv))
  			return -EFAULT;
  	}
---- linux-2.6.20.1/arch/s390/kernel/process.c	2006-11-30 21:18:32 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/s390/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/s390/kernel/process.c	2006-11-30 21:18:32 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/s390/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -165,9 +165,9 @@ void show_regs(struct pt_regs *regs)
  	struct task_struct *tsk = current;
  
@@ -1380,8 +1415,8 @@
  		       0, &regs, 0, NULL, NULL);
  }
  
---- linux-2.6.20.1/arch/s390/kernel/ptrace.c	2006-06-18 04:52:33 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/s390/kernel/ptrace.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/s390/kernel/ptrace.c	2006-06-18 04:52:33 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/s390/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -33,6 +33,7 @@
  #include <linux/security.h>
  #include <linux/audit.h>
@@ -1404,8 +1439,8 @@
  	put_task_struct(child);
  out:
  	unlock_kernel();
---- linux-2.6.20.1/arch/s390/kernel/syscalls.S	2006-11-30 21:18:32 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/s390/kernel/syscalls.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/s390/kernel/syscalls.S	2006-11-30 21:18:32 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/s390/kernel/syscalls.S	2007-04-01 17:29:39 +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)
@@ -1415,8 +1450,20 @@
  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)
---- linux-2.6.20.1/arch/sh/Kconfig	2007-02-06 03:00:17 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sh/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/s390/mm/fault.c	2007-02-06 03:00:17 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/s390/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -359,7 +359,8 @@ out_of_memory:
+ 		down_read(&mm->mmap_sem);
+ 		goto survive;
+ 	}
+-	printk("VM: killing process %s\n", tsk->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		tsk->comm, tsk->pid, tsk->xid);
+ 	if (regs->psw.mask & PSW_MASK_PSTATE)
+ 		do_exit(SIGKILL);
+ 	goto no_context;
+--- linux-2.6.20.4/arch/sh/Kconfig	2007-02-06 03:00:17 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sh/Kconfig	2007-04-01 17:29:39 +0200
 @@ -709,6 +709,8 @@ source "arch/sh/oprofile/Kconfig"
  
  source "arch/sh/Kconfig.debug"
@@ -1426,8 +1473,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/sh/kernel/irq.c	2007-02-06 03:00:17 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sh/kernel/irq.c	2007-02-06 03:09:33 +0100
+--- linux-2.6.20.4/arch/sh/kernel/irq.c	2007-02-06 03:00:17 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sh/kernel/irq.c	2007-04-01 17:29:24 +0200
 @@ -13,6 +13,7 @@
  #include <linux/seq_file.h>
  #include <linux/io.h>
@@ -1436,8 +1483,8 @@
  #include <asm/processor.h>
  #include <asm/uaccess.h>
  #include <asm/thread_info.h>
---- linux-2.6.20.1/arch/sh/kernel/kgdb_stub.c	2006-11-30 21:18:34 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sh/kernel/kgdb_stub.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sh/kernel/kgdb_stub.c	2006-11-30 21:18:34 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sh/kernel/kgdb_stub.c	2007-04-01 17:30:01 +0200
 @@ -389,7 +389,7 @@ static struct task_struct *get_thread(in
  	if (pid == PID_MAX) pid = 0;
  
@@ -1447,8 +1494,8 @@
  
  	if (thread)
  		return thread;
---- linux-2.6.20.1/arch/sh/kernel/process.c	2007-02-06 03:00:17 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sh/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sh/kernel/process.c	2007-02-06 03:00:17 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sh/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -104,7 +104,8 @@ void machine_power_off(void)
  void show_regs(struct pt_regs * regs)
  {
@@ -1469,8 +1516,8 @@
  }
  
  /*
---- linux-2.6.20.1/arch/sh/kernel/vsyscall/vsyscall.c	2007-02-06 03:00:17 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sh/kernel/vsyscall/vsyscall.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sh/kernel/vsyscall/vsyscall.c	2007-02-06 03:00:17 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sh/kernel/vsyscall/vsyscall.c	2007-04-01 17:29:47 +0200
 @@ -17,6 +17,7 @@
  #include <linux/gfp.h>
  #include <linux/module.h>
@@ -1488,8 +1535,20 @@
  up_fail:
  	up_write(&mm->mmap_sem);
  	return ret;
---- linux-2.6.20.1/arch/sh64/kernel/process.c	2006-11-30 21:18:35 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sh64/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sh/mm/fault.c	2007-02-06 03:00:17 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sh/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -202,7 +202,8 @@ out_of_memory:
+ 		down_read(&mm->mmap_sem);
+ 		goto survive;
+ 	}
+-	printk("VM: killing process %s\n", tsk->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		tsk->comm, tsk->pid, tsk->xid);
+ 	if (user_mode(regs))
+ 		do_exit(SIGKILL);
+ 	goto no_context;
+--- linux-2.6.20.4/arch/sh64/kernel/process.c	2006-11-30 21:18:35 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sh64/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -400,8 +400,8 @@ int kernel_thread(int (*fn)(void *), voi
  	regs.pc = (unsigned long)kernel_thread_helper;
  	regs.sr = (1 << 30);
@@ -1501,8 +1560,8 @@
  }
  
  /*
---- linux-2.6.20.1/arch/sh64/mm/fault.c	2007-02-06 03:00:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sh64/mm/fault.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sh64/mm/fault.c	2007-02-06 03:00:18 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sh64/mm/fault.c	2007-04-01 17:29:41 +0200
 @@ -82,7 +82,7 @@ static inline void print_vma(struct vm_a
  
  static inline void print_task(struct task_struct *tsk)
@@ -1512,8 +1571,18 @@
  }
  
  static pte_t *lookup_pte(struct mm_struct *mm, unsigned long address)
---- linux-2.6.20.1/arch/sparc/Kconfig	2007-02-06 03:00:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc/Kconfig	2007-02-06 03:05:21 +0100
+@@ -331,7 +331,8 @@ out_of_memory:
+ 		down_read(&mm->mmap_sem);
+ 		goto survive;
+ 	}
+-	printk("VM: killing process %s\n", tsk->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		tsk->comm, tsk->pid, tsk->xid);
+ 	if (user_mode(regs))
+ 		do_exit(SIGKILL);
+ 	goto no_context;
+--- linux-2.6.20.4/arch/sparc/Kconfig	2007-02-06 03:00:18 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc/Kconfig	2007-04-01 17:29:39 +0200
 @@ -306,6 +306,8 @@ endmenu
  
  source "arch/sparc/Kconfig.debug"
@@ -1523,8 +1592,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/sparc/kernel/process.c	2007-02-06 03:00:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc/kernel/process.c	2007-02-06 03:00:18 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -706,7 +706,8 @@ pid_t kernel_thread(int (*fn)(void *), v
  			     /* Notreached by child. */
  			     "1: mov %%o0, %0\n\t" :
@@ -1535,8 +1604,8 @@
  			     "i" (__NR_exit),  "r" (fn), "r" (arg) :
  			     "g1", "g2", "g3", "o0", "o1", "memory", "cc");
  	return retval;
---- linux-2.6.20.1/arch/sparc/kernel/ptrace.c	2007-02-06 03:00:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc/kernel/ptrace.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc/kernel/ptrace.c	2007-02-06 03:00:18 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -19,6 +19,7 @@
  #include <linux/smp_lock.h>
  #include <linux/security.h>
@@ -1556,8 +1625,8 @@
  
  	if ((current->personality == PER_SUNOS && request == PTRACE_SUNATTACH)
  	    || (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
---- linux-2.6.20.1/arch/sparc/kernel/systbls.S	2006-11-30 21:18:35 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc/kernel/systbls.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc/kernel/systbls.S	2006-11-30 21:18:35 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc/kernel/systbls.S	2007-04-01 17:29:39 +0200
 @@ -71,7 +71,7 @@ sys_call_table:
  /*250*/	.long sparc_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
  /*255*/	.long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
@@ -1567,8 +1636,8 @@
  /*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_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
---- linux-2.6.20.1/arch/sparc/kernel/traps.c	2006-09-20 16:58:06 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc/kernel/traps.c	2006-09-20 16:58:06 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/sparc/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -99,7 +99,8 @@ void die_if_kernel(char *str, struct pt_
  "              /_| \\__/ |_\\\n"
  "                 \\__U_/\n");
@@ -1579,8 +1648,20 @@
  	show_regs(regs);
  
  	__SAVE; __SAVE; __SAVE; __SAVE;
---- linux-2.6.20.1/arch/sparc64/Kconfig	2007-02-06 03:00:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc64/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc/mm/fault.c	2006-01-03 17:29:19 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -368,7 +368,8 @@ no_context:
+  */
+ out_of_memory:
+ 	up_read(&mm->mmap_sem);
+-	printk("VM: killing process %s\n", tsk->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		tsk->comm, tsk->pid, tsk->xid);
+ 	if (from_user)
+ 		do_exit(SIGKILL);
+ 	goto no_context;
+--- linux-2.6.20.4/arch/sparc64/Kconfig	2007-02-06 03:00:18 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/Kconfig	2007-04-01 17:29:39 +0200
 @@ -447,6 +447,8 @@ endmenu
  
  source "arch/sparc64/Kconfig.debug"
@@ -1590,8 +1671,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/sparc64/kernel/binfmt_aout32.c	2007-02-06 03:00:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc64/kernel/binfmt_aout32.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc64/kernel/binfmt_aout32.c	2007-02-06 03:00:18 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/kernel/binfmt_aout32.c	2007-04-01 17:29:24 +0200
 @@ -27,6 +27,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -1600,8 +1681,8 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
---- linux-2.6.20.1/arch/sparc64/kernel/process.c	2006-09-20 16:58:06 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc64/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc64/kernel/process.c	2006-09-20 16:58:06 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -696,7 +696,8 @@ pid_t kernel_thread(int (*fn)(void *), v
  			     /* Notreached by child. */
  			     "1:" :
@@ -1612,8 +1693,8 @@
  			     "i" (__NR_exit),  "r" (fn), "r" (arg) :
  			     "g1", "g2", "g3", "o0", "o1", "memory", "cc");
  	return retval;
---- linux-2.6.20.1/arch/sparc64/kernel/ptrace.c	2007-02-06 03:00:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc64/kernel/ptrace.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc64/kernel/ptrace.c	2007-02-06 03:00:18 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -22,6 +22,7 @@
  #include <linux/seccomp.h>
  #include <linux/audit.h>
@@ -1633,8 +1714,8 @@
  
  	if ((current->personality == PER_SUNOS && request == PTRACE_SUNATTACH)
  	    || (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
---- linux-2.6.20.1/arch/sparc64/kernel/sys_sparc32.c	2006-11-30 21:18:35 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc64/kernel/sys_sparc32.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc64/kernel/sys_sparc32.c	2006-11-30 21:18:35 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/kernel/sys_sparc32.c	2007-04-01 17:29:43 +0200
 @@ -793,7 +793,7 @@ asmlinkage long sys32_gettimeofday(struc
  {
  	if (tv) {
@@ -1644,8 +1725,8 @@
  		if (put_tv32(tv, &ktv))
  			return -EFAULT;
  	}
---- linux-2.6.20.1/arch/sparc64/kernel/systbls.S	2006-11-30 21:18:35 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc64/kernel/systbls.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc64/kernel/systbls.S	2006-11-30 21:18:35 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/kernel/systbls.S	2007-04-01 17:29:39 +0200
 @@ -72,7 +72,7 @@ sys_call_table32:
  /*250*/	.word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl
  	.word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
@@ -1664,8 +1745,8 @@
  /*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_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
---- linux-2.6.20.1/arch/sparc64/kernel/traps.c	2007-02-06 03:00:20 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc64/kernel/traps.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc64/kernel/traps.c	2007-02-06 03:00:20 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -2233,7 +2233,8 @@ void die_if_kernel(char *str, struct pt_
  "              /_| \\__/ |_\\\n"
  "                 \\__U_/\n");
@@ -1676,8 +1757,20 @@
  	notify_die(DIE_OOPS, str, regs, 0, 255, SIGSEGV);
  	__asm__ __volatile__("flushw");
  	__show_regs(regs);
---- linux-2.6.20.1/arch/sparc64/solaris/fs.c	2007-02-06 03:00:21 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/sparc64/solaris/fs.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/sparc64/mm/fault.c	2006-09-20 16:58:06 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/mm/fault.c	2007-04-01 17:29:41 +0200
+@@ -484,7 +484,8 @@ handle_kernel_fault:
+ out_of_memory:
+ 	insn = get_fault_insn(regs, insn);
+ 	up_read(&mm->mmap_sem);
+-	printk("VM: killing process %s\n", current->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		current->comm, current->pid, current->xid);
+ 	if (!(regs->tstate & TSTATE_PRIV))
+ 		do_exit(SIGKILL);
+ 	goto handle_kernel_fault;
+--- linux-2.6.20.4/arch/sparc64/solaris/fs.c	2007-02-06 03:00:21 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/sparc64/solaris/fs.c	2007-04-01 17:30:01 +0200
 @@ -368,7 +368,7 @@ static int report_statvfs(struct vfsmoun
  		int j = strlen (p);
  		
@@ -1696,8 +1789,8 @@
  		if (mnt->mnt_flags & MNT_NOSUID) i |= 2;
  		if (!sysv_valid_dev(inode->i_sb->s_dev))
  			return -EOVERFLOW;
---- linux-2.6.20.1/arch/um/Kconfig	2007-02-06 03:00:21 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/um/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/um/Kconfig	2007-02-06 03:00:21 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/um/Kconfig	2007-04-01 17:29:39 +0200
 @@ -311,6 +311,8 @@ source "drivers/connector/Kconfig"
  
  source "fs/Kconfig"
@@ -1707,36 +1800,20 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/um/kernel/irq.c	2006-11-30 21:18:36 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/um/kernel/irq.c	2007-02-06 03:05:21 +0100
-@@ -357,6 +357,7 @@ void forward_interrupts(int pid)
- unsigned int do_IRQ(int irq, union uml_pt_regs *regs)
- {
- 	struct pt_regs *old_regs = set_irq_regs((struct pt_regs *)regs);
-+
- 	irq_enter();
- 	__do_IRQ(irq);
- 	irq_exit();
---- linux-2.6.20.1/arch/um/kernel/syscall.c	2006-11-30 21:18:36 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/um/kernel/syscall.c	2007-02-06 03:05:21 +0100
-@@ -15,6 +15,7 @@
- #include "linux/unistd.h"
- #include "linux/slab.h"
- #include "linux/utime.h"
-+
- #include "asm/mman.h"
- #include "asm/uaccess.h"
- #include "kern_util.h"
-@@ -118,6 +119,7 @@ long sys_uname(struct old_utsname __user
- long sys_olduname(struct oldold_utsname __user * name)
- {
- 	long error;
-+	struct new_utsname *ptr;
- 
- 	if (!name)
- 		return -EFAULT;
---- linux-2.6.20.1/arch/v850/Kconfig	2007-02-06 03:00:21 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/v850/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/um/kernel/trap.c	2006-11-30 21:18:36 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/um/kernel/trap.c	2007-04-01 17:29:41 +0200
+@@ -193,7 +193,8 @@ unsigned long segv(struct faultinfo fi, 
+                 current->thread.arch.faultinfo = fi;
+ 		force_sig_info(SIGBUS, &si, current);
+ 	} else if (err == -ENOMEM) {
+-		printk("VM: killing process %s\n", current->comm);
++		printk("VM: killing process %s(%d:#%u)\n",
++			current->comm, current->pid, current->xid);
+ 		do_exit(SIGKILL);
+ 	} else {
+ 		BUG_ON(err != -EFAULT);
+--- linux-2.6.20.4/arch/v850/Kconfig	2007-02-06 03:00:21 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/v850/Kconfig	2007-04-01 17:29:39 +0200
 @@ -334,6 +334,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/v850/Kconfig.debug"
@@ -1746,8 +1823,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/v850/kernel/process.c	2006-09-20 16:58:06 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/v850/kernel/process.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/v850/kernel/process.c	2006-09-20 16:58:06 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/v850/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -83,7 +83,7 @@ int kernel_thread (int (*fn)(void *), vo
  	/* Clone this thread.  Note that we don't pass the clone syscall's
  	   second argument -- it's ignored for calls from kernel mode (the
@@ -1757,8 +1834,8 @@
  	syscall = __NR_clone;
  	asm volatile ("trap " SYSCALL_SHORT_TRAP
  		      : "=r" (ret), "=r" (syscall)
---- linux-2.6.20.1/arch/v850/kernel/ptrace.c	2006-04-09 13:49:44 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/v850/kernel/ptrace.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/v850/kernel/ptrace.c	2006-04-09 13:49:44 +0200
++++ linux-2.6.20.4-vs2.2.0/arch/v850/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -24,6 +24,7 @@
  #include <linux/smp_lock.h>
  #include <linux/ptrace.h>
@@ -1777,8 +1854,8 @@
  	switch (request) {
  		unsigned long val, copied;
  
---- linux-2.6.20.1/arch/x86_64/Kconfig	2007-02-06 03:00:21 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/Kconfig	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/x86_64/Kconfig	2007-02-06 03:00:21 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/Kconfig	2007-04-01 17:29:39 +0200
 @@ -735,6 +735,8 @@ endmenu
  
  source "arch/x86_64/Kconfig.debug"
@@ -1788,8 +1865,8 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
---- linux-2.6.20.1/arch/x86_64/ia32/ia32_aout.c	2007-02-06 03:00:21 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/ia32/ia32_aout.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/x86_64/ia32/ia32_aout.c	2007-02-06 03:00:21 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/ia32/ia32_aout.c	2007-04-01 17:29:24 +0200
 @@ -25,6 +25,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -1798,8 +1875,8 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
---- linux-2.6.20.1/arch/x86_64/ia32/ia32_binfmt.c	2007-02-06 03:00:21 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/ia32/ia32_binfmt.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/x86_64/ia32/ia32_binfmt.c	2007-02-06 03:00:21 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/ia32/ia32_binfmt.c	2007-04-01 17:29:47 +0200
 @@ -324,7 +324,8 @@ int ia32_setup_arg_pages(struct linux_bi
  			kmem_cache_free(vm_area_cachep, mpnt);
  			return ret;
@@ -1810,8 +1887,8 @@
  	} 
  
  	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
---- linux-2.6.20.1/arch/x86_64/ia32/ia32entry.S	2006-11-30 21:18:37 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/ia32/ia32entry.S	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/x86_64/ia32/ia32entry.S	2006-11-30 21:18:37 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/ia32/ia32entry.S	2007-04-01 17:29:39 +0200
 @@ -672,7 +672,7 @@ ia32_sys_call_table:
  	.quad sys_tgkill		/* 270 */
  	.quad compat_sys_utimes
@@ -1821,8 +1898,8 @@
  	.quad sys_mbind
  	.quad compat_sys_get_mempolicy	/* 275 */
  	.quad sys_set_mempolicy
---- linux-2.6.20.1/arch/x86_64/ia32/sys_ia32.c	2006-11-30 21:18:37 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/ia32/sys_ia32.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/x86_64/ia32/sys_ia32.c	2006-11-30 21:18:37 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/ia32/sys_ia32.c	2007-04-01 17:29:43 +0200
 @@ -454,7 +454,7 @@ sys32_gettimeofday(struct compat_timeval
  {
  	if (tv) {
@@ -1832,8 +1909,8 @@
  		if (put_tv32(tv, &ktv))
  			return -EFAULT;
  	}
---- linux-2.6.20.1/arch/x86_64/ia32/syscall32.c	2007-02-06 03:00:21 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/ia32/syscall32.c	2007-02-06 03:05:21 +0100
+--- linux-2.6.20.4/arch/x86_64/ia32/syscall32.c	2007-02-06 03:00:21 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/ia32/syscall32.c	2007-04-01 17:29:47 +0200
 @@ -10,6 +10,7 @@
  #include <linux/init.h>
  #include <linux/stringify.h>
@@ -1851,8 +1928,8 @@
  	up_write(&mm->mmap_sem);
  	return 0;
  }
---- linux-2.6.20.1/arch/x86_64/kernel/process.c	2007-02-06 03:00:22 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/kernel/process.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/arch/x86_64/kernel/process.c	2007-02-06 03:00:22 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/kernel/process.c	2007-04-01 17:29:50 +0200
 @@ -54,7 +54,8 @@
  
  asmlinkage extern void ret_from_fork(void);
@@ -1874,8 +1951,8 @@
  		init_utsname()->release,
  		(int)strcspn(init_utsname()->version, " "),
  		init_utsname()->version);
---- linux-2.6.20.1/arch/x86_64/kernel/traps.c	2007-02-06 03:00:22 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/kernel/traps.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/arch/x86_64/kernel/traps.c	2007-02-06 03:00:22 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/kernel/traps.c	2007-04-01 17:29:41 +0200
 @@ -430,8 +430,9 @@ void show_registers(struct pt_regs *regs
  
  	printk("CPU %d ", cpu);
@@ -1910,8 +1987,8 @@
  			       regs->rip, regs->rsp, error_code); 
  
  		force_sig(SIGSEGV, tsk);
---- linux-2.6.20.1/arch/x86_64/mm/fault.c	2007-02-06 03:00:22 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/arch/x86_64/mm/fault.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/arch/x86_64/mm/fault.c	2007-02-06 03:00:22 +0100
++++ linux-2.6.20.4-vs2.2.0/arch/x86_64/mm/fault.c	2007-04-01 17:29:41 +0200
 @@ -514,10 +514,10 @@ bad_area_nosemaphore:
  
  		if (exception_trace && unhandled_signal(tsk, SIGSEGV)) {
@@ -1926,8 +2003,18 @@
  		}
         
  		tsk->thread.cr2 = address;
---- linux-2.6.20.1/block/cfq-iosched.c	2007-02-06 03:00:22 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/block/cfq-iosched.c	2007-02-06 03:11:09 +0100
+@@ -584,7 +584,8 @@ out_of_memory:
+ 		yield();
+ 		goto again;
+ 	}
+-	printk("VM: killing process %s\n", tsk->comm);
++	printk("VM: killing process %s(%d:#%u)\n",
++		tsk->comm, tsk->pid, tsk->xid);
+ 	if (error_code & 4)
+ 		do_exit(SIGKILL);
+ 	goto no_context;
+--- linux-2.6.20.4/block/cfq-iosched.c	2007-02-06 03:00:22 +0100
++++ linux-2.6.20.4-vs2.2.0/block/cfq-iosched.c	2007-04-01 17:30:02 +0200
 @@ -221,6 +221,8 @@ static int cfq_queue_empty(request_queue
  
  static inline pid_t cfq_queue_pid(struct task_struct *task, int rw, int is_sync)
@@ -1937,8 +2024,8 @@
  	/*
  	 * Use the per-process queue, for read requests and syncronous writes
  	 */
---- linux-2.6.20.1/drivers/block/Kconfig	2007-02-06 03:00:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/block/Kconfig	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/drivers/block/Kconfig	2007-02-06 03:00:26 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/block/Kconfig	2007-04-01 17:29:58 +0200
 @@ -311,6 +311,13 @@ config BLK_DEV_CRYPTOLOOP
  	  instead, which can be configured to be on-disk compatible with the
  	  cryptoloop device.
@@ -1953,16 +2040,16 @@
  config BLK_DEV_NBD
  	tristate "Network block device support"
  	depends on NET
---- linux-2.6.20.1/drivers/block/Makefile	2007-02-06 03:00:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/block/Makefile	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/drivers/block/Makefile	2007-02-06 03:00:26 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/block/Makefile	2007-04-01 17:29:58 +0200
 @@ -28,4 +28,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
  
---- linux-2.6.20.1/drivers/block/loop.c	2007-02-06 03:00:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/block/loop.c	2007-02-15 00:06:27 +0100
+--- linux-2.6.20.4/drivers/block/loop.c	2007-02-06 03:00:26 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/block/loop.c	2007-04-01 17:30:01 +0200
 @@ -74,6 +74,7 @@
  #include <linux/highmem.h>
  #include <linux/gfp.h>
@@ -2008,8 +2095,8 @@
  	mutex_lock(&lo->lo_ctl_mutex);
  	lo->lo_refcnt++;
  	mutex_unlock(&lo->lo_ctl_mutex);
---- linux-2.6.20.1/drivers/block/vroot.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/block/vroot.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/drivers/block/vroot.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/block/vroot.c	2007-04-01 17:29:58 +0200
 @@ -0,0 +1,281 @@
 +/*
 + *  linux/drivers/block/vroot.c
@@ -2019,7 +2106,7 @@
 + *
 + *  based on the loop.c code by Theodore Ts'o.
 + *
-+ * Copyright (C) 2002-2006 by Herbert Pötzl.
++ * Copyright (C) 2002-2007 by Herbert Pötzl.
 + * Redistribution of this file is permitted under the
 + * GNU General Public License.
 + *
@@ -2292,19 +2379,8 @@
 +
 +#endif
 +
---- linux-2.6.20.1/drivers/char/random.c	2007-02-06 03:00:33 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/char/random.c	2007-02-06 03:05:22 +0100
-@@ -1178,7 +1178,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)
- {
--	ctl_table fake_table;
-+	ctl_table fake_table = {0};
- 	unsigned char buf[64], tmp_uuid[16], *uuid;
- 
- 	uuid = table->data;
---- linux-2.6.20.1/drivers/char/sysrq.c	2007-02-06 03:00:34 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/char/sysrq.c	2007-02-06 03:12:21 +0100
+--- linux-2.6.20.4/drivers/char/sysrq.c	2007-02-06 03:00:34 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/char/sysrq.c	2007-04-01 17:29:48 +0200
 @@ -36,6 +36,7 @@
  #include <linux/workqueue.h>
  #include <linux/kexec.h>
@@ -2357,8 +2433,8 @@
  	else
  		retval = -1;
  	return retval;
---- linux-2.6.20.1/drivers/char/tty_io.c	2007-02-06 03:00:34 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/char/tty_io.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/drivers/char/tty_io.c	2007-03-10 20:33:59 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/char/tty_io.c	2007-04-01 17:30:05 +0200
 @@ -103,6 +103,7 @@
  #include <linux/selection.h>
  
@@ -2367,7 +2443,15 @@
  
  #undef TTY_DEBUG_HANGUP
  
-@@ -2964,13 +2965,16 @@ unlock:
+@@ -185,6 +186,7 @@ static inline void free_tty_struct(struc
+ {
+ 	kfree(tty->write_buf);
+ 	tty_buffer_free_all(tty);
++	memset(tty, 0xDEADDEAD, sizeof(struct tty_struct));
+ 	kfree(tty);
+ }
+ 
+@@ -2978,13 +2980,16 @@ unlock:
  
  static int tiocgpgrp(struct tty_struct *tty, struct tty_struct *real_tty, pid_t __user *p)
  {
@@ -2385,7 +2469,7 @@
  }
  
  /**
-@@ -3000,6 +3004,8 @@ static int tiocspgrp(struct tty_struct *
+@@ -3014,6 +3019,8 @@ static int tiocspgrp(struct tty_struct *
  		return -ENOTTY;
  	if (get_user(pgrp, p))
  		return -EFAULT;
@@ -2394,8 +2478,18 @@
  	if (pgrp < 0)
  		return -EINVAL;
  	if (session_of_pgrp(pgrp) != process_session(current))
---- linux-2.6.20.1/drivers/infiniband/core/uverbs_mem.c	2007-02-06 03:00:37 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/infiniband/core/uverbs_mem.c	2007-02-06 03:05:22 +0100
+@@ -3788,6 +3795,9 @@ EXPORT_SYMBOL(tty_unregister_driver);
+ 
+ dev_t tty_devnum(struct tty_struct *tty)
+ {
++	WARN_ON(!tty);
++	WARN_ON(!tty->magic);
++	WARN_ON(!tty->driver);
+ 	return MKDEV(tty->driver->major, tty->driver->minor_start) + tty->index;
+ }
+ EXPORT_SYMBOL(tty_devnum);
+--- linux-2.6.20.4/drivers/infiniband/core/uverbs_mem.c	2007-02-06 03:00:37 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/infiniband/core/uverbs_mem.c	2007-04-01 17:29:47 +0200
 @@ -36,6 +36,7 @@
  
  #include <linux/mm.h>
@@ -2433,8 +2527,8 @@
  	up_write(&work->mm->mmap_sem);
  	mmput(work->mm);
  	kfree(work);
---- linux-2.6.20.1/drivers/infiniband/hw/ipath/ipath_user_pages.c	2007-02-06 03:00:37 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/infiniband/hw/ipath/ipath_user_pages.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/drivers/infiniband/hw/ipath/ipath_user_pages.c	2007-02-06 03:00:37 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/infiniband/hw/ipath/ipath_user_pages.c	2007-04-01 17:29:47 +0200
 @@ -33,6 +33,7 @@
  
  #include <linux/mm.h>
@@ -2480,8 +2574,8 @@
  	up_write(&work->mm->mmap_sem);
  	mmput(work->mm);
  	kfree(work);
---- linux-2.6.20.1/drivers/md/dm-ioctl.c	2007-02-06 03:00:41 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/md/dm-ioctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/drivers/md/dm-ioctl.c	2007-02-06 03:00:41 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/md/dm-ioctl.c	2007-04-01 17:30:01 +0200
 @@ -15,6 +15,7 @@
  #include <linux/slab.h>
  #include <linux/dm-ioctl.h>
@@ -2563,8 +2657,8 @@
  		return -EACCES;
  
  	if (_IOC_TYPE(command) != DM_IOCTL)
---- linux-2.6.20.1/drivers/md/dm.c	2007-02-06 03:00:41 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/md/dm.c	2007-02-15 00:06:27 +0100
+--- linux-2.6.20.4/drivers/md/dm.c	2007-02-06 03:00:41 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/md/dm.c	2007-04-01 17:30:01 +0200
 @@ -21,6 +21,7 @@
  #include <linux/hdreg.h>
  #include <linux/blktrace_api.h>
@@ -2638,8 +2732,8 @@
  
  	md->queue = blk_alloc_queue(GFP_KERNEL);
  	if (!md->queue)
---- linux-2.6.20.1/drivers/md/dm.h	2007-02-06 03:00:41 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/drivers/md/dm.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/drivers/md/dm.h	2007-02-06 03:00:41 +0100
++++ linux-2.6.20.4-vs2.2.0/drivers/md/dm.h	2007-04-01 17:30:01 +0200
 @@ -91,6 +91,8 @@ void dm_put_target_type(struct target_ty
  int dm_target_iterate(void (*iter_func)(struct target_type *tt,
  					void *param), void *param);
@@ -2649,8 +2743,8 @@
  /*-----------------------------------------------------------------
   * Useful inlines.
   *---------------------------------------------------------------*/
---- linux-2.6.20.1/fs/attr.c	2006-04-09 13:49:53 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/attr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/attr.c	2006-04-09 13:49:53 +0200
++++ linux-2.6.20.4-vs2.2.0/fs/attr.c	2007-04-01 17:29:47 +0200
 @@ -15,6 +15,9 @@
  #include <linux/fcntl.h>
  #include <linux/quotaops.h>
@@ -2711,8 +2805,8 @@
  				error = DQUOT_TRANSFER(inode, attr) ? -EDQUOT : 0;
  			if (!error)
  				error = inode_setattr(inode, attr);
---- linux-2.6.20.1/fs/binfmt_aout.c	2007-02-06 03:01:16 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/binfmt_aout.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/binfmt_aout.c	2007-02-06 03:01:16 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/binfmt_aout.c	2007-04-01 17:29:24 +0200
 @@ -24,6 +24,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -2721,8 +2815,8 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
---- linux-2.6.20.1/fs/binfmt_elf.c	2007-02-06 03:01:16 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/binfmt_elf.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/binfmt_elf.c	2007-03-10 20:34:00 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/binfmt_elf.c	2007-04-01 17:29:33 +0200
 @@ -39,6 +39,7 @@
  #include <linux/syscalls.h>
  #include <linux/random.h>
@@ -2731,8 +2825,8 @@
  #include <asm/uaccess.h>
  #include <asm/param.h>
  #include <asm/page.h>
---- linux-2.6.20.1/fs/binfmt_flat.c	2007-02-06 03:01:16 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/binfmt_flat.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/binfmt_flat.c	2007-02-06 03:01:16 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/binfmt_flat.c	2007-04-01 17:29:37 +0200
 @@ -36,6 +36,7 @@
  #include <linux/init.h>
  #include <linux/flat.h>
@@ -2741,8 +2835,8 @@
  
  #include <asm/byteorder.h>
  #include <asm/system.h>
---- linux-2.6.20.1/fs/binfmt_som.c	2006-11-30 21:19:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/binfmt_som.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/binfmt_som.c	2006-11-30 21:19:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/binfmt_som.c	2007-04-01 17:29:38 +0200
 @@ -28,6 +28,7 @@
  #include <linux/shm.h>
  #include <linux/personality.h>
@@ -2751,8 +2845,8 @@
  
  #include <asm/a.out.h>
  #include <asm/uaccess.h>
---- linux-2.6.20.1/fs/dcache.c	2007-02-06 03:01:17 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/dcache.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/dcache.c	2007-02-06 03:01:17 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/dcache.c	2007-04-01 17:29:48 +0200
 @@ -32,6 +32,7 @@
  #include <linux/seqlock.h>
  #include <linux/swap.h>
@@ -2812,8 +2906,8 @@
  			found = dentry;
  		}
  		spin_unlock(&dentry->d_lock);
---- linux-2.6.20.1/fs/devpts/inode.c	2006-11-30 21:19:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/devpts/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/devpts/inode.c	2006-11-30 21:19:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/devpts/inode.c	2007-04-01 17:29:42 +0200
 @@ -19,8 +19,22 @@
  #include <linux/tty.h>
  #include <linux/devpts_fs.h>
@@ -2886,8 +2980,8 @@
  	inode->i_private = tty;
  
  	dentry = get_node(number);
---- linux-2.6.20.1/fs/ecryptfs/inode.c	2007-02-06 03:01:17 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ecryptfs/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ecryptfs/inode.c	2007-02-06 03:01:17 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ecryptfs/inode.c	2007-04-01 17:30:01 +0200
 @@ -415,7 +415,7 @@ static int ecryptfs_link(struct dentry *
  	dget(lower_new_dentry);
  	lower_dir_dentry = lock_parent(lower_new_dentry);
@@ -2942,8 +3036,8 @@
  	if (rc || !lower_dentry->d_inode)
  		goto out;
  	rc = ecryptfs_interpose(lower_dentry, dentry, dir->i_sb, 0);
---- linux-2.6.20.1/fs/exec.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/exec.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/exec.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/exec.c	2007-04-01 17:29:47 +0200
 @@ -50,6 +50,7 @@
  #include <linux/tsacct_kern.h>
  #include <linux/cn_proc.h>
@@ -2971,8 +3065,8 @@
  				rc = snprintf(out_ptr, out_end - out_ptr,
  					      "%lu", tv.tv_sec);
  				if (rc > out_end - out_ptr)
---- linux-2.6.20.1/fs/ext2/balloc.c	2006-09-20 16:58:34 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/balloc.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/balloc.c	2006-09-20 16:58:34 +0200
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/balloc.c	2007-04-01 17:29:50 +0200
 @@ -16,6 +16,8 @@
  #include <linux/sched.h>
  #include <linux/buffer_head.h>
@@ -3026,8 +3120,8 @@
  	release_blocks(sb, es_alloc);
  out_dquot:
  	DQUOT_FREE_BLOCK(inode, dq_alloc);
---- linux-2.6.20.1/fs/ext2/ext2.h	2006-11-30 21:19:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/ext2.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/ext2.h	2006-11-30 21:19:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/ext2.h	2007-04-01 17:29:46 +0200
 @@ -166,6 +166,7 @@ extern const struct file_operations ext2
  extern const struct address_space_operations ext2_aops;
  extern const struct address_space_operations ext2_aops_xip;
@@ -3036,8 +3130,8 @@
  
  /* namei.c */
  extern struct inode_operations ext2_dir_inode_operations;
---- linux-2.6.20.1/fs/ext2/file.c	2006-11-30 21:19:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/file.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/file.c	2006-11-30 21:19:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/file.c	2007-04-01 17:30:00 +0200
 @@ -54,6 +54,7 @@ const struct file_operations ext2_file_o
  	.release	= ext2_release_file,
  	.fsync		= ext2_sync_file,
@@ -3052,8 +3146,8 @@
  	.permission	= ext2_permission,
 +	.sync_flags	= ext2_sync_flags,
  };
---- linux-2.6.20.1/fs/ext2/ialloc.c	2006-11-30 21:19:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/ialloc.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/ialloc.c	2006-11-30 21:19:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/ialloc.c	2007-04-01 17:29:50 +0200
 @@ -17,6 +17,8 @@
  #include <linux/backing-dev.h>
  #include <linux/buffer_head.h>
@@ -3109,8 +3203,8 @@
  	make_bad_inode(inode);
  	iput(inode);
  	return ERR_PTR(err);
---- linux-2.6.20.1/fs/ext2/inode.c	2006-11-30 21:19:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/inode.c	2006-11-30 21:19:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/inode.c	2007-04-01 17:29:47 +0200
 @@ -31,6 +31,7 @@
  #include <linux/writeback.h>
  #include <linux/buffer_head.h>
@@ -3242,8 +3336,8 @@
  		error = DQUOT_TRANSFER(inode, iattr) ? -EDQUOT : 0;
  		if (error)
  			return error;
---- linux-2.6.20.1/fs/ext2/ioctl.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/ioctl.c	2007-02-06 03:13:14 +0100
+--- linux-2.6.20.4/fs/ext2/ioctl.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/ioctl.c	2007-04-01 17:30:01 +0200
 @@ -13,6 +13,7 @@
  #include <linux/sched.h>
  #include <linux/compat.h>
@@ -3283,8 +3377,8 @@
  			return -EROFS;
  		if (get_user(inode->i_generation, (int __user *) arg))
  			return -EFAULT;	
---- linux-2.6.20.1/fs/ext2/namei.c	2006-11-30 21:19:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/namei.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/namei.c	2006-11-30 21:19:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/namei.c	2007-04-01 17:29:47 +0200
 @@ -31,6 +31,7 @@
   */
  
@@ -3315,8 +3409,8 @@
  	.permission	= ext2_permission,
 +	.sync_flags	= ext2_sync_flags,
  };
---- linux-2.6.20.1/fs/ext2/super.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/super.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/super.c	2007-03-10 20:34:00 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/super.c	2007-04-01 17:29:45 +0200
 @@ -324,7 +324,7 @@ enum {
  	Opt_err_ro, Opt_nouid32, Opt_nocheck, Opt_debug,
  	Opt_oldalloc, Opt_orlov, Opt_nobh, Opt_user_xattr, Opt_nouser_xattr,
@@ -3358,7 +3452,7 @@
  		case Opt_nocheck:
  			clear_opt (sbi->s_mount_opt, CHECK);
  			break;
-@@ -726,6 +744,8 @@ static int ext2_fill_super(struct super_
+@@ -730,6 +748,8 @@ static int ext2_fill_super(struct super_
  	if (!parse_options ((char *) data, sbi))
  		goto failed_mount;
  
@@ -3367,7 +3461,7 @@
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((EXT2_SB(sb)->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ?
  		 MS_POSIXACL : 0);
-@@ -1034,6 +1054,13 @@ static int ext2_remount (struct super_bl
+@@ -1038,6 +1058,13 @@ static int ext2_remount (struct super_bl
  		goto restore_opts;
  	}
  
@@ -3381,8 +3475,8 @@
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
  
---- linux-2.6.20.1/fs/ext2/symlink.c	2005-08-29 22:25:30 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/symlink.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/symlink.c	2005-08-29 22:25:30 +0200
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/symlink.c	2007-04-01 17:29:46 +0200
 @@ -38,6 +38,7 @@ struct inode_operations ext2_symlink_ino
  	.listxattr	= ext2_listxattr,
  	.removexattr	= generic_removexattr,
@@ -3397,8 +3491,8 @@
  #endif
 +	.sync_flags	= ext2_sync_flags,
  };
---- linux-2.6.20.1/fs/ext2/xattr.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext2/xattr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext2/xattr.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext2/xattr.c	2007-04-01 17:29:50 +0200
 @@ -60,6 +60,7 @@
  #include <linux/mbcache.h>
  #include <linux/quotaops.h>
@@ -3436,8 +3530,8 @@
  		DQUOT_FREE_BLOCK(inode, 1);
  	}
  	EXT2_I(inode)->i_file_acl = 0;
---- linux-2.6.20.1/fs/ext3/balloc.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/balloc.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/balloc.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/balloc.c	2007-04-01 17:29:50 +0200
 @@ -19,6 +19,8 @@
  #include <linux/ext3_jbd.h>
  #include <linux/quotaops.h>
@@ -3537,8 +3631,8 @@
  	if (fatal) {
  		*errp = fatal;
  		ext3_std_error(sb, fatal);
---- linux-2.6.20.1/fs/ext3/file.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/file.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/file.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/file.c	2007-04-01 17:30:00 +0200
 @@ -121,6 +121,7 @@ const struct file_operations ext3_file_o
  	.release	= ext3_release_file,
  	.fsync		= ext3_sync_file,
@@ -3554,8 +3648,8 @@
 +	.sync_flags	= ext3_sync_flags,
  };
  
---- linux-2.6.20.1/fs/ext3/ialloc.c	2006-11-30 21:19:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/ialloc.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/ialloc.c	2006-11-30 21:19:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/ialloc.c	2007-04-01 17:29:50 +0200
 @@ -23,6 +23,8 @@
  #include <linux/buffer_head.h>
  #include <linux/random.h>
@@ -3613,8 +3707,8 @@
  	inode->i_flags |= S_NOQUOTA;
  	inode->i_nlink = 0;
  	iput(inode);
---- linux-2.6.20.1/fs/ext3/inode.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/inode.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/inode.c	2007-04-01 17:29:47 +0200
 @@ -37,6 +37,7 @@
  #include <linux/mpage.h>
  #include <linux/uio.h>
@@ -3799,8 +3893,8 @@
  		error = ext3_mark_inode_dirty(handle, inode);
  		ext3_journal_stop(handle);
  	}
---- linux-2.6.20.1/fs/ext3/ioctl.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/ioctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/ioctl.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/ioctl.c	2007-04-01 17:30:05 +0200
 @@ -8,6 +8,7 @@
   */
  
@@ -3917,8 +4011,8 @@
  
  	default:
  		return -ENOTTY;
---- linux-2.6.20.1/fs/ext3/namei.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/namei.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/namei.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/namei.c	2007-04-01 17:29:47 +0200
 @@ -37,6 +37,7 @@
  #include <linux/buffer_head.h>
  #include <linux/bio.h>
@@ -3949,8 +4043,8 @@
  	.permission	= ext3_permission,
 +	.sync_flags	= ext3_sync_flags,
  };
---- linux-2.6.20.1/fs/ext3/super.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/super.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/super.c	2007-03-10 20:34:00 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/super.c	2007-04-01 17:29:45 +0200
 @@ -677,7 +677,7 @@ enum {
  	Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
  	Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
@@ -3992,7 +4086,7 @@
  		case Opt_nocheck:
  			clear_opt (sbi->s_mount_opt, CHECK);
  			break;
-@@ -1486,6 +1504,9 @@ static int ext3_fill_super (struct super
+@@ -1490,6 +1508,9 @@ static int ext3_fill_super (struct super
  			    NULL, 0))
  		goto failed_mount;
  
@@ -4002,7 +4096,7 @@
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT3_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
  
-@@ -2301,6 +2322,12 @@ static int ext3_remount (struct super_bl
+@@ -2305,6 +2326,12 @@ static int ext3_remount (struct super_bl
  
  	if (sbi->s_mount_opt & EXT3_MOUNT_ABORT)
  		ext3_abort(sb, __FUNCTION__, "Abort forced by user");
@@ -4015,8 +4109,8 @@
  
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT3_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
---- linux-2.6.20.1/fs/ext3/symlink.c	2005-08-29 22:25:30 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/symlink.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/symlink.c	2005-08-29 22:25:30 +0200
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/symlink.c	2007-04-01 17:29:46 +0200
 @@ -40,6 +40,7 @@ struct inode_operations ext3_symlink_ino
  	.listxattr	= ext3_listxattr,
  	.removexattr	= generic_removexattr,
@@ -4031,8 +4125,8 @@
  #endif
 +	.sync_flags	= ext3_sync_flags,
  };
---- linux-2.6.20.1/fs/ext3/xattr.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext3/xattr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext3/xattr.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext3/xattr.c	2007-04-01 17:29:50 +0200
 @@ -58,6 +58,7 @@
  #include <linux/mbcache.h>
  #include <linux/quotaops.h>
@@ -4074,8 +4168,8 @@
  	goto cleanup;
  
  bad_block:
---- linux-2.6.20.1/fs/ext4/balloc.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/balloc.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/balloc.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/balloc.c	2007-04-01 17:29:50 +0200
 @@ -19,6 +19,8 @@
  #include <linux/ext4_jbd2.h>
  #include <linux/quotaops.h>
@@ -4174,8 +4268,8 @@
  	if (fatal) {
  		*errp = fatal;
  		ext4_std_error(sb, fatal);
---- linux-2.6.20.1/fs/ext4/file.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/file.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/file.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/file.c	2007-04-01 17:30:00 +0200
 @@ -121,6 +121,7 @@ const struct file_operations ext4_file_o
  	.release	= ext4_release_file,
  	.fsync		= ext4_sync_file,
@@ -4191,8 +4285,8 @@
 +	.sync_flags	= ext4_sync_flags,
  };
  
---- linux-2.6.20.1/fs/ext4/ialloc.c	2006-11-30 21:19:20 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/ialloc.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/ialloc.c	2006-11-30 21:19:20 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/ialloc.c	2007-04-01 17:29:50 +0200
 @@ -24,6 +24,8 @@
  #include <linux/random.h>
  #include <linux/bitops.h>
@@ -4250,8 +4344,8 @@
  	inode->i_flags |= S_NOQUOTA;
  	inode->i_nlink = 0;
  	iput(inode);
---- linux-2.6.20.1/fs/ext4/inode.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/inode.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/inode.c	2007-04-01 17:29:47 +0200
 @@ -37,6 +37,7 @@
  #include <linux/mpage.h>
  #include <linux/uio.h>
@@ -4436,8 +4530,8 @@
  		error = ext4_mark_inode_dirty(handle, inode);
  		ext4_journal_stop(handle);
  	}
---- linux-2.6.20.1/fs/ext4/ioctl.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/ioctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/ioctl.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/ioctl.c	2007-04-01 17:30:05 +0200
 @@ -8,6 +8,7 @@
   */
  
@@ -4555,8 +4649,8 @@
  	default:
  		return -ENOTTY;
  	}
---- linux-2.6.20.1/fs/ext4/namei.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/namei.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/namei.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/namei.c	2007-04-01 17:29:47 +0200
 @@ -37,6 +37,7 @@
  #include <linux/buffer_head.h>
  #include <linux/bio.h>
@@ -4587,8 +4681,8 @@
  	.permission	= ext4_permission,
 +	.sync_flags	= ext4_sync_flags,
  };
---- linux-2.6.20.1/fs/ext4/super.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/super.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/super.c	2007-03-10 20:34:00 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/super.c	2007-04-01 17:29:45 +0200
 @@ -728,7 +728,7 @@ enum {
  	Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
  	Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
@@ -4630,7 +4724,7 @@
  		case Opt_nocheck:
  			clear_opt (sbi->s_mount_opt, CHECK);
  			break;
-@@ -1545,6 +1563,9 @@ static int ext4_fill_super (struct super
+@@ -1549,6 +1567,9 @@ static int ext4_fill_super (struct super
  			    NULL, 0))
  		goto failed_mount;
  
@@ -4640,7 +4734,7 @@
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT4_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
  
-@@ -2376,6 +2397,12 @@ static int ext4_remount (struct super_bl
+@@ -2380,6 +2401,12 @@ static int ext4_remount (struct super_bl
  
  	if (sbi->s_mount_opt & EXT4_MOUNT_ABORT)
  		ext4_abort(sb, __FUNCTION__, "Abort forced by user");
@@ -4653,8 +4747,8 @@
  
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT4_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
---- linux-2.6.20.1/fs/ext4/symlink.c	2006-11-30 21:19:20 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/symlink.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/symlink.c	2006-11-30 21:19:20 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/symlink.c	2007-04-01 17:29:46 +0200
 @@ -40,6 +40,7 @@ struct inode_operations ext4_symlink_ino
  	.listxattr	= ext4_listxattr,
  	.removexattr	= generic_removexattr,
@@ -4669,8 +4763,8 @@
  #endif
 +	.sync_flags	= ext4_sync_flags,
  };
---- linux-2.6.20.1/fs/ext4/xattr.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ext4/xattr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ext4/xattr.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ext4/xattr.c	2007-04-01 17:29:50 +0200
 @@ -58,6 +58,7 @@
  #include <linux/mbcache.h>
  #include <linux/quotaops.h>
@@ -4712,8 +4806,8 @@
  	goto cleanup;
  
  bad_block:
---- linux-2.6.20.1/fs/fcntl.c	2007-02-06 03:01:18 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/fcntl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/fcntl.c	2007-02-06 03:01:18 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/fcntl.c	2007-04-01 17:29:48 +0200
 @@ -18,6 +18,7 @@
  #include <linux/ptrace.h>
  #include <linux/signal.h>
@@ -4749,8 +4843,8 @@
  	err = newfd;
  out:
  	return err;
---- linux-2.6.20.1/fs/file_table.c	2007-02-06 03:01:19 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/file_table.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/file_table.c	2007-02-06 03:01:19 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/file_table.c	2007-04-01 17:29:48 +0200
 @@ -21,6 +21,8 @@
  #include <linux/fsnotify.h>
  #include <linux/sysctl.h>
@@ -4787,8 +4881,8 @@
  		file_kill(file);
  		file_free(file);
  	}
---- linux-2.6.20.1/fs/hfsplus/ioctl.c	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/hfsplus/ioctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/hfsplus/ioctl.c	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/hfsplus/ioctl.c	2007-04-01 17:30:01 +0200
 @@ -16,6 +16,7 @@
  #include <linux/fs.h>
  #include <linux/sched.h>
@@ -4807,8 +4901,8 @@
  			return -EROFS;
  
  		if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER))
---- linux-2.6.20.1/fs/inode.c	2007-02-06 03:01:22 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/inode.c	2007-02-06 03:01:22 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/inode.c	2007-04-01 17:30:05 +0200
 @@ -115,6 +115,9 @@ static struct inode *alloc_inode(struct 
  		struct address_space * const mapping = &inode->i_data;
  
@@ -4828,8 +4922,8 @@
  /**
   * clear_inode - clear an inode
   * @inode: inode to clear
---- linux-2.6.20.1/fs/ioctl.c	2007-02-06 03:01:22 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ioctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ioctl.c	2007-02-06 03:01:22 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ioctl.c	2007-04-01 17:30:05 +0200
 @@ -12,10 +12,19 @@
  #include <linux/fs.h>
  #include <linux/security.h>
@@ -4899,8 +4993,8 @@
  		default:
  			if (S_ISREG(filp->f_path.dentry->d_inode->i_mode))
  				error = file_ioctl(filp, cmd, arg);
---- linux-2.6.20.1/fs/ioprio.c	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ioprio.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ioprio.c	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ioprio.c	2007-04-01 17:30:04 +0200
 @@ -25,6 +25,7 @@
  #include <linux/capability.h>
  #include <linux/syscalls.h>
@@ -4909,7 +5003,16 @@
  
  static int set_task_ioprio(struct task_struct *task, int ioprio)
  {
-@@ -109,7 +110,7 @@ asmlinkage long sys_ioprio_set(int which
+@@ -100,6 +101,8 @@ asmlinkage long sys_ioprio_set(int which
+ 			if (!who)
+ 				who = process_group(current);
+ 			do_each_task_pid(who, PIDTYPE_PGID, p) {
++				if (!vx_check(p->xid, VS_ADMIN_P | VS_IDENT))
++					continue;
+ 				ret = set_task_ioprio(p, ioprio);
+ 				if (ret)
+ 					break;
+@@ -109,7 +112,7 @@ asmlinkage long sys_ioprio_set(int which
  			if (!who)
  				user = current->user;
  			else
@@ -4918,7 +5021,16 @@
  
  			if (!user)
  				break;
-@@ -197,7 +198,7 @@ asmlinkage long sys_ioprio_get(int which
+@@ -184,6 +187,8 @@ asmlinkage long sys_ioprio_get(int which
+ 			if (!who)
+ 				who = process_group(current);
+ 			do_each_task_pid(who, PIDTYPE_PGID, p) {
++				if (!vx_check(p->xid, VS_ADMIN_P | VS_IDENT))
++					continue;
+ 				tmpio = get_task_ioprio(p);
+ 				if (tmpio < 0)
+ 					continue;
+@@ -197,7 +202,7 @@ asmlinkage long sys_ioprio_get(int which
  			if (!who)
  				user = current->user;
  			else
@@ -4927,8 +5039,8 @@
  
  			if (!user)
  				break;
---- linux-2.6.20.1/fs/jfs/acl.c	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/acl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/acl.c	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/acl.c	2007-04-01 17:29:47 +0200
 @@ -232,7 +232,8 @@ int jfs_setattr(struct dentry *dentry, s
  		return rc;
  
@@ -4939,8 +5051,8 @@
  		if (DQUOT_TRANSFER(inode, iattr))
  			return -EDQUOT;
  	}
---- linux-2.6.20.1/fs/jfs/file.c	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/file.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/file.c	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/file.c	2007-04-01 17:30:00 +0200
 @@ -98,6 +98,7 @@ struct inode_operations jfs_file_inode_o
  	.setattr	= jfs_setattr,
  	.permission	= jfs_permission,
@@ -4957,8 +5069,8 @@
  	.splice_read	= generic_file_splice_read,
  	.splice_write	= generic_file_splice_write,
  	.fsync		= jfs_fsync,
---- linux-2.6.20.1/fs/jfs/inode.c	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/inode.c	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/inode.c	2007-04-01 17:29:50 +0200
 @@ -22,6 +22,7 @@
  #include <linux/buffer_head.h>
  #include <linux/pagemap.h>
@@ -4975,8 +5087,8 @@
  	}
  
  	clear_inode(inode);
---- linux-2.6.20.1/fs/jfs/ioctl.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/ioctl.c	2007-02-06 03:13:33 +0100
+--- linux-2.6.20.4/fs/jfs/ioctl.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/ioctl.c	2007-04-01 17:30:01 +0200
 @@ -10,6 +10,7 @@
  #include <linux/capability.h>
  #include <linux/time.h>
@@ -5006,8 +5118,8 @@
  			if (!capable(CAP_LINUX_IMMUTABLE))
  				return -EPERM;
  		}
---- linux-2.6.20.1/fs/jfs/jfs_dinode.h	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/jfs_dinode.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/jfs_dinode.h	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/jfs_dinode.h	2007-04-01 17:29:46 +0200
 @@ -162,9 +162,12 @@ struct dinode {
  #define JFS_APPEND_FL		0x01000000 /* writes to file may only append */
  #define JFS_IMMUTABLE_FL	0x02000000 /* Immutable file */
@@ -5023,8 +5135,8 @@
  
  /* These are identical to EXT[23]_IOC_GETFLAGS/SETFLAGS */
  #define JFS_IOC_GETFLAGS	_IOR('f', 1, long)
---- linux-2.6.20.1/fs/jfs/jfs_dtree.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/jfs_dtree.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/jfs_dtree.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/jfs_dtree.c	2007-04-01 17:29:50 +0200
 @@ -102,6 +102,7 @@
  
  #include <linux/fs.h>
@@ -5136,8 +5248,8 @@
  				/* Free quota allocation */
  				DQUOT_FREE_BLOCK(ip, xlen);
  
---- linux-2.6.20.1/fs/jfs/jfs_extent.c	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/jfs_extent.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/jfs_extent.c	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/jfs_extent.c	2007-04-01 17:29:50 +0200
 @@ -18,6 +18,7 @@
  
  #include <linux/fs.h>
@@ -5199,8 +5311,8 @@
  			DQUOT_FREE_BLOCK(ip, nxlen);
  			goto exit;
  		}
---- linux-2.6.20.1/fs/jfs/jfs_filsys.h	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/jfs_filsys.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/jfs_filsys.h	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/jfs_filsys.h	2007-04-01 17:29:47 +0200
 @@ -264,6 +264,7 @@
  #define JFS_NAME_MAX	255
  #define JFS_PATH_MAX	BPSIZE
@@ -5209,8 +5321,8 @@
  
  /*
   *	file system state (superblock state)
---- linux-2.6.20.1/fs/jfs/jfs_imap.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/jfs_imap.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/jfs_imap.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/jfs_imap.c	2007-04-01 17:29:46 +0200
 @@ -45,6 +45,7 @@
  #include <linux/buffer_head.h>
  #include <linux/pagemap.h>
@@ -5270,8 +5382,8 @@
  	/*
  	 * mode2 is only needed for storing the higher order bits.
  	 * Trust i_mode for the lower order ones
---- linux-2.6.20.1/fs/jfs/jfs_inode.c	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/jfs_inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/jfs_inode.c	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/jfs_inode.c	2007-04-01 17:29:50 +0200
 @@ -18,6 +18,8 @@
  
  #include <linux/fs.h>
@@ -5351,8 +5463,8 @@
  		DQUOT_DROP(inode);
  		inode->i_flags |= S_NOQUOTA;
  		inode->i_nlink = 0;
---- linux-2.6.20.1/fs/jfs/jfs_inode.h	2006-11-30 21:19:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/jfs_inode.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/jfs_inode.h	2006-11-30 21:19:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/jfs_inode.h	2007-04-01 17:29:46 +0200
 @@ -31,6 +31,7 @@ extern void jfs_truncate(struct inode *)
  extern void jfs_truncate_nolock(struct inode *, loff_t);
  extern void jfs_free_zero_link(struct inode *);
@@ -5361,8 +5473,8 @@
  extern void jfs_set_inode_flags(struct inode *);
  extern int jfs_get_block(struct inode *, sector_t, struct buffer_head *, int);
  
---- linux-2.6.20.1/fs/jfs/jfs_xtree.c	2006-11-30 21:19:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/jfs_xtree.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/jfs_xtree.c	2006-11-30 21:19:26 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/jfs_xtree.c	2007-04-01 17:29:50 +0200
 @@ -21,6 +21,7 @@
  
  #include <linux/fs.h>
@@ -5446,8 +5558,8 @@
  	/* update quota allocation to reflect freed blocks */
  	DQUOT_FREE_BLOCK(ip, nfreed);
  
---- linux-2.6.20.1/fs/jfs/namei.c	2006-11-30 21:19:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/namei.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/namei.c	2006-11-30 21:19:26 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/namei.c	2007-04-01 17:29:47 +0200
 @@ -20,6 +20,7 @@
  #include <linux/fs.h>
  #include <linux/ctype.h>
@@ -5472,8 +5584,8 @@
  };
  
  const struct file_operations jfs_dir_operations = {
---- linux-2.6.20.1/fs/jfs/super.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/super.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/super.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/super.c	2007-04-01 17:29:45 +0200
 @@ -194,7 +194,8 @@ static void jfs_put_super(struct super_b
  enum {
  	Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize,
@@ -5540,8 +5652,8 @@
  
  	if (newLVSize) {
  		printk(KERN_ERR "resize option for remount only\n");
---- linux-2.6.20.1/fs/jfs/xattr.c	2006-11-30 21:19:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/jfs/xattr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/jfs/xattr.c	2006-11-30 21:19:26 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/jfs/xattr.c	2007-04-01 17:29:50 +0200
 @@ -23,6 +23,7 @@
  #include <linux/posix_acl_xattr.h>
  #include <linux/quotaops.h>
@@ -5619,8 +5731,8 @@
  
  	inode->i_ctime = CURRENT_TIME;
  
---- linux-2.6.20.1/fs/libfs.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/libfs.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/libfs.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/libfs.c	2007-04-01 17:30:04 +0200
 @@ -124,7 +124,8 @@ static inline unsigned char dt_type(stru
   * both impossible due to the lock on directory.
   */
@@ -5667,8 +5779,8 @@
  EXPORT_SYMBOL(generic_read_dir);
  EXPORT_SYMBOL(get_sb_pseudo);
  EXPORT_SYMBOL(simple_commit_write);
---- linux-2.6.20.1/fs/locks.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/locks.c	2007-02-25 17:48:19 +0100
+--- linux-2.6.20.4/fs/locks.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/locks.c	2007-04-01 17:30:03 +0200
 @@ -125,6 +125,8 @@
  #include <linux/syscalls.h>
  #include <linux/time.h>
@@ -5864,8 +5976,8 @@
  		lock_get_status(q, fl, ++i, "");
  		move_lock_status(&q, &pos, offset);
  
---- linux-2.6.20.1/fs/namei.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/namei.c	2007-02-15 00:05:56 +0100
+--- linux-2.6.20.4/fs/namei.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/namei.c	2007-04-01 17:30:03 +0200
 @@ -32,6 +32,11 @@
  #include <linux/file.h>
  #include <linux/fcntl.h>
@@ -6387,8 +6499,8 @@
  /* get the link contents into pagecache */
  static char *page_getlink(struct dentry * dentry, struct page **ppage)
  {
---- linux-2.6.20.1/fs/namespace.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/namespace.c	2007-02-06 05:58:26 +0100
+--- linux-2.6.20.4/fs/namespace.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/namespace.c	2007-04-01 17:30:02 +0200
 @@ -25,6 +25,11 @@
  #include <linux/security.h>
  #include <linux/mount.h>
@@ -6722,8 +6834,8 @@
 +	atomic_dec(&vs_global_mnt_ns);
  	kfree(ns);
  }
---- linux-2.6.20.1/fs/nfs/client.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfs/client.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfs/client.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfs/client.c	2007-04-01 17:30:04 +0200
 @@ -520,6 +520,9 @@ static int nfs_init_server_rpcclient(str
  	if (server->flags & NFS4_MOUNT_INTR)
  		server->client->cl_intr = 1;
@@ -6745,8 +6857,8 @@
  	server->maxfilesize = fsinfo->maxfilesize;
  
  	/* We're airborne Set socket buffersize */
---- linux-2.6.20.1/fs/nfs/dir.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfs/dir.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfs/dir.c	2007-02-06 03:01:24 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfs/dir.c	2007-04-01 17:30:01 +0200
 @@ -33,6 +33,7 @@
  #include <linux/pagevec.h>
  #include <linux/namei.h>
@@ -6773,8 +6885,8 @@
  		return 0;
  	return 1;
  }
---- linux-2.6.20.1/fs/nfs/inode.c	2007-02-06 03:01:24 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfs/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfs/inode.c	2007-03-25 00:56:55 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfs/inode.c	2007-04-01 17:30:04 +0200
 @@ -37,6 +37,7 @@
  #include <linux/vfs.h>
  #include <linux/inet.h>
@@ -6805,7 +6917,7 @@
  		spin_lock(&inode->i_lock);
  		NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
  		spin_unlock(&inode->i_lock);
-@@ -815,6 +820,9 @@ static int nfs_check_inode_attributes(st
+@@ -816,6 +821,9 @@ static int nfs_check_inode_attributes(st
  	struct nfs_inode *nfsi = NFS_I(inode);
  	loff_t cur_size, new_isize;
  	int data_unstable;
@@ -6815,7 +6927,7 @@
  
  
  	/* Has the inode gone and changed behind our back? */
-@@ -842,10 +850,15 @@ static int nfs_check_inode_attributes(st
+@@ -843,10 +851,15 @@ static int nfs_check_inode_attributes(st
  	if (cur_size != new_isize && nfsi->npages == 0)
  		nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE;
  
@@ -6833,7 +6945,7 @@
  		nfsi->cache_validity |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL;
  
  	/* Has the link count changed? */
-@@ -935,6 +948,9 @@ static int nfs_update_inode(struct inode
+@@ -936,6 +949,9 @@ static int nfs_update_inode(struct inode
  	loff_t cur_isize, new_isize;
  	unsigned int	invalid = 0;
  	int data_stable;
@@ -6843,7 +6955,7 @@
  
  	dfprintk(VFS, "NFS: %s(%s/%ld ct=%d info=0x%x)\n",
  			__FUNCTION__, inode->i_sb->s_id, inode->i_ino,
-@@ -1007,15 +1023,21 @@ static int nfs_update_inode(struct inode
+@@ -1008,15 +1024,21 @@ static int nfs_update_inode(struct inode
  	}
  	memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime));
  
@@ -6869,8 +6981,8 @@
  
  	if (fattr->valid & (NFS_ATTR_FATTR_V3 | NFS_ATTR_FATTR_V4)) {
  		/*
---- linux-2.6.20.1/fs/nfs/nfs3xdr.c	2006-11-30 21:19:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfs/nfs3xdr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfs/nfs3xdr.c	2006-11-30 21:19:26 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfs/nfs3xdr.c	2007-04-01 17:30:04 +0200
 @@ -22,6 +22,7 @@
  #include <linux/nfs3.h>
  #include <linux/nfs_fs.h>
@@ -6960,8 +7072,8 @@
  	if (args->type == NF3CHR || args->type == NF3BLK) {
  		*p++ = htonl(MAJOR(args->rdev));
  		*p++ = htonl(MINOR(args->rdev));
---- linux-2.6.20.1/fs/nfs/nfsroot.c	2007-02-06 03:01:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfs/nfsroot.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfs/nfsroot.c	2007-02-06 03:01:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfs/nfsroot.c	2007-04-01 17:30:04 +0200
 @@ -118,12 +118,12 @@ static int mount_port __initdata = 0;		/
  enum {
  	/* Options that take integer arguments */
@@ -7009,8 +7121,8 @@
  			default:
  				printk(KERN_WARNING "Root-NFS: unknown "
  					"option: %s\n", p);
---- linux-2.6.20.1/fs/nfs/super.c	2006-11-30 21:19:26 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfs/super.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfs/super.c	2006-11-30 21:19:26 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfs/super.c	2007-04-01 17:30:04 +0200
 @@ -44,6 +44,7 @@
  #include <linux/vfs.h>
  #include <linux/inet.h>
@@ -7027,8 +7139,8 @@
  		{ 0, NULL, NULL }
  	};
  	const struct proc_nfs_info *nfs_infop;
---- linux-2.6.20.1/fs/nfsd/auth.c	2006-06-18 04:54:42 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfsd/auth.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfsd/auth.c	2006-06-18 04:54:42 +0200
++++ linux-2.6.20.4-vs2.2.0/fs/nfsd/auth.c	2007-04-01 17:30:04 +0200
 @@ -9,6 +9,7 @@
  #include <linux/sunrpc/svc.h>
  #include <linux/sunrpc/svcauth.h>
@@ -7063,8 +7175,8 @@
  		cap_t(current->cap_effective) &= ~CAP_NFSD_MASK;
  	} else {
  		cap_t(current->cap_effective) |= (CAP_NFSD_MASK &
---- linux-2.6.20.1/fs/nfsd/nfs3xdr.c	2007-02-06 03:01:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfsd/nfs3xdr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfsd/nfs3xdr.c	2007-02-06 03:01:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfsd/nfs3xdr.c	2007-04-01 17:30:04 +0200
 @@ -21,6 +21,7 @@
  #include <linux/sunrpc/svc.h>
  #include <linux/nfsd/nfsd.h>
@@ -7113,8 +7225,8 @@
  	if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
  		p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
  	} else {
---- linux-2.6.20.1/fs/nfsd/nfs4recover.c	2007-02-06 03:01:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfsd/nfs4recover.c	2007-02-06 03:14:20 +0100
+--- linux-2.6.20.4/fs/nfsd/nfs4recover.c	2007-02-06 03:01:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfsd/nfs4recover.c	2007-04-01 17:30:01 +0200
 @@ -156,7 +156,7 @@ nfsd4_create_clid_dir(struct nfs4_client
  		dprintk("NFSD: nfsd4_create_clid_dir: DIRECTORY EXISTS\n");
  		goto out_put;
@@ -7142,8 +7254,8 @@
  	mutex_unlock(&dir->d_inode->i_mutex);
  	return status;
  }
---- linux-2.6.20.1/fs/nfsd/nfs4xdr.c	2007-02-06 03:01:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfsd/nfs4xdr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfsd/nfs4xdr.c	2007-02-06 03:01:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfsd/nfs4xdr.c	2007-04-01 17:30:04 +0200
 @@ -57,6 +57,7 @@
  #include <linux/nfsd_idmap.h>
  #include <linux/nfs4.h>
@@ -7173,8 +7285,8 @@
  		if (status == nfserr_resource)
  			goto out_resource;
  		if (status)
---- linux-2.6.20.1/fs/nfsd/nfsxdr.c	2007-02-06 03:01:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfsd/nfsxdr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfsd/nfsxdr.c	2007-02-06 03:01:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfsd/nfsxdr.c	2007-04-01 17:30:04 +0200
 @@ -15,6 +15,7 @@
  #include <linux/nfsd/nfsd.h>
  #include <linux/nfsd/xdr.h>
@@ -7223,8 +7335,8 @@
  
  	if (S_ISLNK(type) && stat->size > NFS_MAXPATHLEN) {
  		*p++ = htonl(NFS_MAXPATHLEN);
---- linux-2.6.20.1/fs/nfsd/vfs.c	2007-02-06 03:01:25 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/nfsd/vfs.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/nfsd/vfs.c	2007-02-06 03:01:25 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/nfsd/vfs.c	2007-04-01 17:30:01 +0200
 @@ -1183,13 +1183,13 @@ nfsd_create(struct svc_rqst *rqstp, stru
  		host_err = vfs_create(dirp, dchild, iap->ia_mode, NULL);
  		break;
@@ -7288,8 +7400,8 @@
  				return nfserr_rofs;
  			if (/* (acc & MAY_WRITE) && */ IS_IMMUTABLE(inode))
  				return nfserr_perm;
---- linux-2.6.20.1/fs/ocfs2/dlm/dlmfs.c	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/dlm/dlmfs.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/dlm/dlmfs.c	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/dlm/dlmfs.c	2007-04-01 17:30:00 +0200
 @@ -44,6 +44,7 @@
  #include <linux/string.h>
  #include <linux/smp_lock.h>
@@ -7314,8 +7426,8 @@
  	inode->i_blocks = 0;
  	inode->i_mapping->backing_dev_info = &dlmfs_backing_dev_info;
  	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
---- linux-2.6.20.1/fs/ocfs2/dlmglue.c	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/dlmglue.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/dlmglue.c	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/dlmglue.c	2007-04-01 17:30:00 +0200
 @@ -1339,6 +1339,7 @@ static void __ocfs2_stuff_meta_lvb(struc
  	lvb->lvb_iclusters = cpu_to_be32(oi->ip_clusters);
  	lvb->lvb_iuid      = cpu_to_be32(inode->i_uid);
@@ -7332,8 +7444,8 @@
  	inode->i_mode    = be16_to_cpu(lvb->lvb_imode);
  	inode->i_nlink   = be16_to_cpu(lvb->lvb_inlink);
  	ocfs2_unpack_timespec(&inode->i_atime,
---- linux-2.6.20.1/fs/ocfs2/dlmglue.h	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/dlmglue.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/dlmglue.h	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/dlmglue.h	2007-04-01 17:30:00 +0200
 @@ -34,7 +34,7 @@
  struct ocfs2_meta_lvb {
  	__u8         lvb_version;
@@ -7343,8 +7455,8 @@
  	__be32       lvb_iclusters;
  	__be32       lvb_iuid;
  	__be32       lvb_igid;
---- linux-2.6.20.1/fs/ocfs2/file.c	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/file.c	2007-02-06 03:20:23 +0100
+--- linux-2.6.20.4/fs/ocfs2/file.c	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/file.c	2007-04-01 17:30:00 +0200
 @@ -858,13 +858,15 @@ int ocfs2_setattr(struct dentry *dentry,
  		mlog(0, "uid change: %d\n", attr->ia_uid);
  	if (attr->ia_valid & ATTR_GID)
@@ -7370,8 +7482,8 @@
  	.permission	= ocfs2_permission,
  };
  
---- linux-2.6.20.1/fs/ocfs2/inode.c	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/inode.c	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/inode.c	2007-04-01 17:30:00 +0200
 @@ -29,6 +29,7 @@
  #include <linux/highmem.h>
  #include <linux/pagemap.h>
@@ -7492,8 +7604,8 @@
  	inode->i_mode = le16_to_cpu(fe->i_mode);
  	if (S_ISLNK(inode->i_mode) && le32_to_cpu(fe->i_clusters) == 0)
  		inode->i_blocks = 0;
---- linux-2.6.20.1/fs/ocfs2/inode.h	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/inode.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/inode.h	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/inode.h	2007-04-01 17:29:46 +0200
 @@ -143,5 +143,6 @@ int ocfs2_aio_read(struct file *file, st
  int ocfs2_aio_write(struct file *file, struct kiocb *req, struct iocb *iocb);
  
@@ -7501,8 +7613,8 @@
 +int ocfs2_sync_flags(struct inode *inode);
  
  #endif /* OCFS2_INODE_H */
---- linux-2.6.20.1/fs/ocfs2/ioctl.c	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/ioctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/ioctl.c	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/ioctl.c	2007-04-01 17:30:00 +0200
 @@ -38,7 +38,7 @@ static int ocfs2_get_inode_attr(struct i
  	return status;
  }
@@ -7512,8 +7624,8 @@
  				unsigned mask)
  {
  	struct ocfs2_inode_info *ocfs2_inode = OCFS2_I(inode);
---- linux-2.6.20.1/fs/ocfs2/ioctl.h	2006-11-30 21:19:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/ioctl.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/ioctl.h	2006-11-30 21:19:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/ioctl.h	2007-04-01 17:30:00 +0200
 @@ -10,6 +10,9 @@
  #ifndef OCFS2_IOCTL_H
  #define OCFS2_IOCTL_H
@@ -7524,8 +7636,8 @@
  int ocfs2_ioctl(struct inode * inode, struct file * filp,
  	unsigned int cmd, unsigned long arg);
  
---- linux-2.6.20.1/fs/ocfs2/namei.c	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/namei.c	2007-02-06 03:21:17 +0100
+--- linux-2.6.20.4/fs/ocfs2/namei.c	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/namei.c	2007-04-01 17:30:00 +0200
 @@ -40,6 +40,7 @@
  #include <linux/types.h>
  #include <linux/slab.h>
@@ -7574,8 +7686,8 @@
 +	.sync_flags     = ocfs2_sync_flags,
  	.permission	= ocfs2_permission,
  };
---- linux-2.6.20.1/fs/ocfs2/ocfs2.h	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/ocfs2.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/ocfs2.h	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/ocfs2.h	2007-04-01 17:30:00 +0200
 @@ -175,6 +175,7 @@ enum ocfs2_mount_options
  	OCFS2_MOUNT_NOINTR  = 1 << 2,   /* Don't catch signals */
  	OCFS2_MOUNT_ERRORS_PANIC = 1 << 3, /* Panic on errors */
@@ -7584,8 +7696,8 @@
  };
  
  #define OCFS2_OSB_SOFT_RO	0x0001
---- linux-2.6.20.1/fs/ocfs2/ocfs2_fs.h	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/ocfs2_fs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/ocfs2/ocfs2_fs.h	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/ocfs2_fs.h	2007-04-01 17:30:00 +0200
 @@ -151,8 +151,12 @@
  #define OCFS2_NOATIME_FL	(0x00000080)	/* do not update atime */
  #define OCFS2_DIRSYNC_FL	(0x00010000)	/* dirsync behaviour (directories only) */
@@ -7599,8 +7711,8 @@
  
  /*
   * ioctl commands
---- linux-2.6.20.1/fs/ocfs2/super.c	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/ocfs2/super.c	2007-02-06 03:23:25 +0100
+--- linux-2.6.20.4/fs/ocfs2/super.c	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/ocfs2/super.c	2007-04-01 17:30:00 +0200
 @@ -140,6 +140,7 @@ enum {
  	Opt_data_ordered,
  	Opt_data_writeback,
@@ -7666,8 +7778,8 @@
  		default:
  			mlog(ML_ERROR,
  			     "Unrecognized mount option \"%s\" "
---- linux-2.6.20.1/fs/open.c	2007-02-06 03:01:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/open.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/open.c	2007-02-06 03:01:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/open.c	2007-04-01 17:30:01 +0200
 @@ -27,22 +27,31 @@
  #include <linux/syscalls.h>
  #include <linux/rcupdate.h>
@@ -7841,8 +7953,8 @@
  }
  
  void fastcall put_unused_fd(unsigned int fd)
---- linux-2.6.20.1/fs/proc/array.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/proc/array.c	2007-02-06 03:15:47 +0100
+--- linux-2.6.20.4/fs/proc/array.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/proc/array.c	2007-04-01 17:30:05 +0200
 @@ -75,6 +75,8 @@
  #include <linux/cpuset.h>
  #include <linux/rcupdate.h>
@@ -8027,8 +8139,8 @@
  		tcomm,
  		state,
  		ppid,
---- linux-2.6.20.1/fs/proc/base.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/proc/base.c	2007-02-26 19:47:43 +0100
+--- linux-2.6.20.4/fs/proc/base.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/proc/base.c	2007-04-01 17:30:01 +0200
 @@ -73,6 +73,9 @@
  #include <linux/poll.h>
  #include <linux/nsproxy.h>
@@ -8048,37 +8160,7 @@
  	security_task_to_inode(task, inode);
  
  out:
-@@ -1086,7 +1091,13 @@ static int pid_revalidate(struct dentry 
- {
- 	struct inode *inode = dentry->d_inode;
- 	struct task_struct *task = get_proc_task(inode);
-+	int ret = 0;
-+
- 	if (task) {
-+		if (!vx_proc_task_visible(task))
-+			goto out_put;
-+
-+		ret = 1;
- 		if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
- 		    task_dumpable(task)) {
- 			inode->i_uid = task->euid;
-@@ -1097,11 +1108,12 @@ static int pid_revalidate(struct dentry 
- 		}
- 		inode->i_mode &= ~(S_ISUID | S_ISGID);
- 		security_task_to_inode(task, inode);
-+	out_put:
- 		put_task_struct(task);
--		return 1;
- 	}
--	d_drop(dentry);
--	return 0;
-+	if (!ret)
-+		d_drop(dentry);
-+	return ret;
- }
- 
- static int pid_delete_dentry(struct dentry * dentry)
-@@ -1467,6 +1479,13 @@ static struct dentry *proc_pident_lookup
+@@ -1467,6 +1472,13 @@ static struct dentry *proc_pident_lookup
  	if (!task)
  		goto out_no_task;
  
@@ -8092,7 +8174,7 @@
  	/*
  	 * Yes, it does not scale. And it should not. Don't add
  	 * new entries into /proc/<tgid>/ without very good reasons.
-@@ -1671,14 +1690,14 @@ static int proc_self_readlink(struct den
+@@ -1671,14 +1683,14 @@ static int proc_self_readlink(struct den
  			      int buflen)
  {
  	char tmp[PROC_NUMBUF];
@@ -8109,7 +8191,7 @@
  	return ERR_PTR(vfs_follow_link(nd,tmp));
  }
  
-@@ -1772,7 +1791,7 @@ out_iput:
+@@ -1772,7 +1784,7 @@ out_iput:
  static struct dentry *proc_base_lookup(struct inode *dir, struct dentry *dentry)
  {
  	struct dentry *error;
@@ -8118,7 +8200,7 @@
  	struct pid_entry *p, *last;
  
  	error = ERR_PTR(-ENOENT);
-@@ -1833,6 +1852,9 @@ static int proc_pid_io_accounting(struct
+@@ -1833,6 +1845,9 @@ static int proc_pid_io_accounting(struct
  static struct file_operations proc_task_operations;
  static struct inode_operations proc_task_inode_operations;
  
@@ -8128,7 +8210,7 @@
  static struct pid_entry tgid_base_stuff[] = {
  	DIR("task",       S_IRUGO|S_IXUGO, task),
  	DIR("fd",         S_IRUSR|S_IXUSR, fd),
-@@ -1870,6 +1892,8 @@ static struct pid_entry tgid_base_stuff[
+@@ -1870,6 +1885,8 @@ static struct pid_entry tgid_base_stuff[
  #ifdef CONFIG_CPUSETS
  	REG("cpuset",     S_IRUGO, cpuset),
  #endif
@@ -8137,7 +8219,7 @@
  	INF("oom_score",  S_IRUGO, oom_score),
  	REG("oom_adj",    S_IRUGO|S_IWUSR, oom_adjust),
  #ifdef CONFIG_AUDITSYSCALL
-@@ -2018,7 +2042,7 @@ struct dentry *proc_pid_lookup(struct in
+@@ -2018,7 +2035,7 @@ struct dentry *proc_pid_lookup(struct in
  		goto out;
  
  	rcu_read_lock();
@@ -8146,7 +8228,7 @@
  	if (task)
  		get_task_struct(task);
  	rcu_read_unlock();
-@@ -2082,7 +2106,7 @@ static int proc_pid_fill_cache(struct fi
+@@ -2082,7 +2099,7 @@ static int proc_pid_fill_cache(struct fi
  int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir)
  {
  	unsigned int nr = filp->f_pos - FIRST_PROCESS_ENTRY;
@@ -8155,19 +8237,16 @@
  	struct task_struct *task;
  	int tgid;
  
-@@ -2101,7 +2125,10 @@ int proc_pid_readdir(struct file * filp,
+@@ -2101,6 +2118,8 @@ int proc_pid_readdir(struct file * filp,
  	     put_task_struct(task), task = next_tgid(tgid + 1)) {
  		tgid = task->pid;
  		filp->f_pos = tgid + TGID_OFFSET;
--		if (proc_pid_fill_cache(filp, dirent, filldir, task, tgid) < 0) {
 +		if (!vx_proc_task_visible(task))
 +			continue;
-+		if (proc_pid_fill_cache(filp, dirent, filldir, task,
-+			vx_map_tgid(tgid)) < 0) {
+ 		if (proc_pid_fill_cache(filp, dirent, filldir, task, tgid) < 0) {
  			put_task_struct(task);
  			goto out;
- 		}
-@@ -2225,9 +2252,11 @@ static struct dentry *proc_task_lookup(s
+@@ -2225,9 +2244,11 @@ static struct dentry *proc_task_lookup(s
  	tid = name_to_int(dentry);
  	if (tid == ~0U)
  		goto out;
@@ -8180,20 +8259,17 @@
  	if (task)
  		get_task_struct(task);
  	rcu_read_unlock();
-@@ -2372,7 +2401,10 @@ static int proc_task_readdir(struct file
+@@ -2372,7 +2393,7 @@ static int proc_task_readdir(struct file
  	for (task = first_tid(leader, tid, pos - 2);
  	     task;
  	     task = next_tid(task), pos++) {
 -		tid = task->pid;
 +		tid = vx_map_pid(task->pid);
-+		/* FIXME: could go away now! */
-+		if (!vx_proc_task_visible(task))
-+			continue;
  		if (proc_task_fill_cache(filp, dirent, filldir, task, tid) < 0) {
  			/* returning this tgid failed, save it as the first
  			 * pid for the next readir call */
---- linux-2.6.20.1/fs/proc/generic.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/proc/generic.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/proc/generic.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/proc/generic.c	2007-04-01 17:30:03 +0200
 @@ -20,6 +20,7 @@
  #include <linux/namei.h>
  #include <linux/bitops.h>
@@ -8253,8 +8329,8 @@
  		} else {
  			kfree(ent);
  			ent = NULL;
---- linux-2.6.20.1/fs/proc/inode.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/proc/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/proc/inode.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/proc/inode.c	2007-04-01 17:30:03 +0200
 @@ -168,6 +168,8 @@ struct inode *proc_get_inode(struct supe
  			inode->i_uid = de->uid;
  			inode->i_gid = de->gid;
@@ -8264,8 +8340,8 @@
  		if (de->size)
  			inode->i_size = de->size;
  		if (de->nlink)
---- linux-2.6.20.1/fs/proc/internal.h	2006-11-30 21:19:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/proc/internal.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/proc/internal.h	2006-11-30 21:19:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/proc/internal.h	2007-04-01 17:29:40 +0200
 @@ -10,6 +10,7 @@
   */
  
@@ -8292,8 +8368,8 @@
  static inline int proc_fd(struct inode *inode)
  {
  	return PROC_I(inode)->fd;
---- linux-2.6.20.1/fs/proc/proc_misc.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/proc/proc_misc.c	2007-02-06 03:19:18 +0100
+--- linux-2.6.20.4/fs/proc/proc_misc.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/proc/proc_misc.c	2007-04-01 17:29:44 +0200
 @@ -54,6 +54,8 @@
  #include <asm/div64.h>
  #include "internal.h"
@@ -8360,8 +8436,8 @@
  		cached = 0;
  
  	get_vmalloc_info(&vmi);
---- linux-2.6.20.1/fs/proc/root.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/proc/root.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/proc/root.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/proc/root.c	2007-04-01 17:29:40 +0200
 @@ -26,6 +26,9 @@ struct proc_dir_entry *proc_net, *proc_n
  #ifdef CONFIG_SYSCTL
  struct proc_dir_entry *proc_sys_root;
@@ -8380,8 +8456,8 @@
  }
  
  static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat
---- linux-2.6.20.1/fs/quota.c	2006-11-30 21:19:28 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/quota.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/quota.c	2006-11-30 21:19:28 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/quota.c	2007-04-01 17:29:58 +0200
 @@ -17,6 +17,7 @@
  #include <linux/buffer_head.h>
  #include <linux/capability.h>
@@ -8417,8 +8493,8 @@
  			return -EPERM;
  	}
  
-@@ -365,6 +366,46 @@ static inline struct super_block *quotac
- #endif
+@@ -337,6 +338,46 @@ static int do_quotactl(struct super_bloc
+ 	return 0;
  }
  
 +#if defined(CONFIG_BLK_DEV_VROOT) || defined(CONFIG_BLK_DEV_VROOT_MODULE)
@@ -8462,10 +8538,33 @@
 +#endif
 +
  /*
-  * This is the system call interface. This communicates with
-  * the user-level programs. Currently this only supports diskquota
---- linux-2.6.20.1/fs/read_write.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/read_write.c	2007-02-06 03:38:37 +0100
+  * look up a superblock on which quota ops will be performed
+  * - use the name of a block device to find the superblock thereon
+@@ -354,6 +395,22 @@ static inline struct super_block *quotac
+ 	putname(tmp);
+ 	if (IS_ERR(bdev))
+ 		return ERR_PTR(PTR_ERR(bdev));
++#if defined(CONFIG_BLK_DEV_VROOT) || defined(CONFIG_BLK_DEV_VROOT_MODULE)
++	if (bdev && bdev->bd_inode &&
++			imajor(bdev->bd_inode) == VROOT_MAJOR) {
++		struct block_device *bdnew = (void *)-EINVAL;
++
++		if (vroot_get_real_bdev)
++			bdnew = vroot_get_real_bdev(bdev);
++		else
++			vxdprintk(VXD_CBIT(misc, 0),
++					"vroot_get_real_bdev not set");
++		bdput(bdev);
++		if (IS_ERR(bdnew))
++			return ERR_PTR(PTR_ERR(bdnew));
++		bdev = bdnew;
++	}
++#endif
+ 	sb = get_super(bdev);
+ 	bdput(bdev);
+ 	if (!sb)
+--- linux-2.6.20.4/fs/read_write.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/read_write.c	2007-04-01 17:30:00 +0200
 @@ -701,12 +701,77 @@ sys_writev(unsigned long fd, const struc
  	return ret;
  }
@@ -8616,8 +8715,8 @@
  fput_out:
  	fput_light(out_file, fput_needed_out);
  fput_in:
---- linux-2.6.20.1/fs/reiserfs/bitmap.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/reiserfs/bitmap.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/reiserfs/bitmap.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/reiserfs/bitmap.c	2007-04-01 17:29:50 +0200
 @@ -13,6 +13,7 @@
  #include <linux/reiserfs_fs_sb.h>
  #include <linux/reiserfs_fs_i.h>
@@ -8710,8 +8809,8 @@
  	}
  
  	return CARRY_ON;
---- linux-2.6.20.1/fs/reiserfs/file.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/reiserfs/file.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/reiserfs/file.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/reiserfs/file.c	2007-04-01 17:30:00 +0200
 @@ -1550,6 +1550,7 @@ const struct file_operations reiserfs_fi
  	.release = reiserfs_file_release,
  	.fsync = reiserfs_sync_file,
@@ -8726,8 +8825,8 @@
  	.permission = reiserfs_permission,
 +	.sync_flags = reiserfs_sync_flags,
  };
---- linux-2.6.20.1/fs/reiserfs/inode.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/reiserfs/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/reiserfs/inode.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/reiserfs/inode.c	2007-04-01 17:29:50 +0200
 @@ -16,6 +16,8 @@
  #include <linux/mpage.h>
  #include <linux/writeback.h>
@@ -8911,8 +9010,8 @@
  				mark_inode_dirty(inode);
  				error =
  				    journal_end(&th, inode->i_sb, jbegin_count);
---- linux-2.6.20.1/fs/reiserfs/ioctl.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/reiserfs/ioctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/reiserfs/ioctl.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/reiserfs/ioctl.c	2007-04-01 17:30:01 +0200
 @@ -4,6 +4,7 @@
  
  #include <linux/capability.h>
@@ -8983,8 +9082,8 @@
  			return -EROFS;
  		if (get_user(inode->i_generation, (int __user *)arg))
  			return -EFAULT;
---- linux-2.6.20.1/fs/reiserfs/namei.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/reiserfs/namei.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/reiserfs/namei.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/reiserfs/namei.c	2007-04-01 17:30:01 +0200
 @@ -18,6 +18,7 @@
  #include <linux/reiserfs_xattr.h>
  #include <linux/smp_lock.h>
@@ -9032,8 +9131,8 @@
 +	.sync_flags = reiserfs_sync_flags,
  
  };
---- linux-2.6.20.1/fs/reiserfs/stree.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/reiserfs/stree.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/reiserfs/stree.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/reiserfs/stree.c	2007-04-01 17:29:50 +0200
 @@ -56,6 +56,7 @@
  #include <linux/smp_lock.h>
  #include <linux/buffer_head.h>
@@ -9109,8 +9208,8 @@
 +	}
  	return retval;
  }
---- linux-2.6.20.1/fs/reiserfs/super.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/reiserfs/super.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/reiserfs/super.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/reiserfs/super.c	2007-04-01 17:29:45 +0200
 @@ -885,6 +885,14 @@ static int reiserfs_parse_options(struct
  		{"user_xattr",.setmask = 1 << REISERFS_UNSUPPORTED_OPT},
  		{"nouser_xattr",.clrmask = 1 << REISERFS_UNSUPPORTED_OPT},
@@ -9150,8 +9249,8 @@
  	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,
---- linux-2.6.20.1/fs/reiserfs/xattr.c	2007-02-06 03:01:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/reiserfs/xattr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/reiserfs/xattr.c	2007-02-06 03:01:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/reiserfs/xattr.c	2007-04-01 17:30:01 +0200
 @@ -35,6 +35,7 @@
  #include <linux/namei.h>
  #include <linux/errno.h>
@@ -9169,8 +9268,8 @@
  		reiserfs_write_unlock_xattrs(inode->i_sb);
  		dput(root);
  	} else {
---- linux-2.6.20.1/fs/stat.c	2007-02-06 03:01:30 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/stat.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/stat.c	2007-02-06 03:01:30 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/stat.c	2007-04-01 17:29:47 +0200
 @@ -27,6 +27,7 @@ void generic_fillattr(struct inode *inod
  	stat->nlink = inode->i_nlink;
  	stat->uid = inode->i_uid;
@@ -9179,8 +9278,8 @@
  	stat->rdev = inode->i_rdev;
  	stat->atime = inode->i_atime;
  	stat->mtime = inode->i_mtime;
---- linux-2.6.20.1/fs/super.c	2007-02-06 03:01:30 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/super.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/super.c	2007-02-06 03:01:30 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/super.c	2007-04-01 17:29:45 +0200
 @@ -37,6 +37,9 @@
  #include <linux/idr.h>
  #include <linux/kobject.h>
@@ -9233,8 +9332,8 @@
  	put_filesystem(type);
  	return mnt;
  }
---- linux-2.6.20.1/fs/sysfs/mount.c	2007-02-06 03:01:30 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/sysfs/mount.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/sysfs/mount.c	2007-02-06 03:01:30 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/sysfs/mount.c	2007-04-01 17:30:04 +0200
 @@ -11,8 +11,6 @@
  
  #include "sysfs.h"
@@ -9253,8 +9352,8 @@
  	sb->s_op = &sysfs_ops;
  	sb->s_time_gran = 1;
  	sysfs_sb = sb;
---- linux-2.6.20.1/fs/utimes.c	2007-02-06 03:01:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/utimes.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/utimes.c	2007-02-06 03:01:31 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/utimes.c	2007-04-01 17:30:00 +0200
 @@ -4,6 +4,8 @@
  #include <linux/namei.h>
  #include <linux/sched.h>
@@ -9264,15 +9363,21 @@
  #include <asm/uaccess.h>
  #include <asm/unistd.h>
  
-@@ -33,7 +35,7 @@ asmlinkage long sys_utime(char __user * 
- 	inode = nd.dentry->d_inode;
+@@ -30,11 +32,11 @@ asmlinkage long sys_utime(char __user * 
+ 	error = user_path_walk(filename, &nd);
+ 	if (error)
+ 		goto out;
+-	inode = nd.dentry->d_inode;
  
- 	error = -EROFS;
+-	error = -EROFS;
 -	if (IS_RDONLY(inode))
-+	if (IS_RDONLY(inode) || MNT_IS_RDONLY(nd.mnt))
++	error = cow_check_and_break(&nd);
++	if (error)
  		goto dput_and_out;
++	inode = nd.dentry->d_inode;
  
  	/* Don't worry, the checks are done in inode_change_ok() */
+ 	newattrs.ia_valid = ATTR_CTIME | ATTR_MTIME | ATTR_ATIME;
 @@ -84,14 +86,13 @@ long do_utimes(int dfd, char __user *fil
  	struct iattr newattrs;
  
@@ -9291,8 +9396,8 @@
  
  	/* Don't worry, the checks are done in inode_change_ok() */
  	newattrs.ia_valid = ATTR_CTIME | ATTR_MTIME | ATTR_ATIME;
---- linux-2.6.20.1/fs/xattr.c	2007-02-06 03:01:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xattr.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xattr.c	2007-02-06 03:01:31 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xattr.c	2007-04-01 17:30:01 +0200
 @@ -18,6 +18,7 @@
  #include <linux/module.h>
  #include <linux/fsnotify.h>
@@ -9393,8 +9498,8 @@
  	fput(f);
  	return error;
  }
---- linux-2.6.20.1/fs/xfs/linux-2.6/xfs_file.c	2007-02-06 03:01:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/linux-2.6/xfs_file.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/linux-2.6/xfs_file.c	2007-02-06 03:01:31 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/linux-2.6/xfs_file.c	2007-04-01 17:30:00 +0200
 @@ -453,6 +453,7 @@ const struct file_operations xfs_file_op
  	.aio_read	= xfs_file_aio_read,
  	.aio_write	= xfs_file_aio_write,
@@ -9411,8 +9516,8 @@
  	.splice_read	= xfs_file_splice_read_invis,
  	.splice_write	= xfs_file_splice_write_invis,
  	.unlocked_ioctl	= xfs_file_ioctl_invis,
---- linux-2.6.20.1/fs/xfs/linux-2.6/xfs_ioctl.c	2007-02-06 03:01:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/linux-2.6/xfs_ioctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/linux-2.6/xfs_ioctl.c	2007-02-06 03:01:31 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/linux-2.6/xfs_ioctl.c	2007-04-01 17:29:46 +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 */
@@ -9433,8 +9538,8 @@
  	if (di_flags & XFS_DIFLAG_APPEND)
  		flags |= LINUX_XFLAG_APPEND;
  	if (di_flags & XFS_DIFLAG_SYNC)
---- linux-2.6.20.1/fs/xfs/linux-2.6/xfs_iops.c	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/linux-2.6/xfs_iops.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/linux-2.6/xfs_iops.c	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/linux-2.6/xfs_iops.c	2007-04-01 17:29:47 +0200
 @@ -53,6 +53,7 @@
  #include <linux/xattr.h>
  #include <linux/namei.h>
@@ -9538,8 +9643,8 @@
  	.removexattr		= xfs_vn_removexattr,
 +	.sync_flags		= xfs_vn_sync_flags,
  };
---- linux-2.6.20.1/fs/xfs/linux-2.6/xfs_linux.h	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/linux-2.6/xfs_linux.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/linux-2.6/xfs_linux.h	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/linux-2.6/xfs_linux.h	2007-04-01 17:30:01 +0200
 @@ -139,6 +139,7 @@ BUFFER_FNS(PrivateStart, unwritten);
  #define current_pid()		(current->pid)
  #define current_fsuid(cred)	(current->fsuid)
@@ -9548,8 +9653,8 @@
  #define current_test_flags(f)	(current->flags & (f))
  #define current_set_flags_nested(sp, f)		\
  		(*(sp) = current->flags, current->flags |= (f))
---- linux-2.6.20.1/fs/xfs/linux-2.6/xfs_super.c	2007-02-06 03:01:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/linux-2.6/xfs_super.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/linux-2.6/xfs_super.c	2007-02-06 03:01:31 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/linux-2.6/xfs_super.c	2007-04-01 17:29:46 +0200
 @@ -159,6 +159,7 @@ xfs_revalidate_inode(
  	inode->i_nlink	= ip->i_d.di_nlink;
  	inode->i_uid	= ip->i_d.di_uid;
@@ -9586,105 +9691,8 @@
  	if (!error)
  		error = bhv_vfs_mntupdate(vfsp, flags, args);
  	kmem_free(args, sizeof(*args));
---- linux-2.6.20.1/fs/xfs/linux-2.6/xfs_sysctl.c	2006-09-20 16:58:39 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/linux-2.6/xfs_sysctl.c	2007-02-06 03:05:22 +0100
-@@ -57,79 +57,79 @@ xfs_stats_clear_proc_handler(
- STATIC ctl_table xfs_table[] = {
- 	{XFS_RESTRICT_CHOWN, "restrict_chown", &xfs_params.restrict_chown.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.restrict_chown.min, &xfs_params.restrict_chown.max},
- 
- 	{XFS_SGID_INHERIT, "irix_sgid_inherit", &xfs_params.sgid_inherit.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.sgid_inherit.min, &xfs_params.sgid_inherit.max},
- 
- 	{XFS_SYMLINK_MODE, "irix_symlink_mode", &xfs_params.symlink_mode.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.symlink_mode.min, &xfs_params.symlink_mode.max},
- 
- 	{XFS_PANIC_MASK, "panic_mask", &xfs_params.panic_mask.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.panic_mask.min, &xfs_params.panic_mask.max},
- 
- 	{XFS_ERRLEVEL, "error_level", &xfs_params.error_level.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.error_level.min, &xfs_params.error_level.max},
- 
- 	{XFS_SYNCD_TIMER, "xfssyncd_centisecs", &xfs_params.syncd_timer.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.syncd_timer.min, &xfs_params.syncd_timer.max},
- 
- 	{XFS_INHERIT_SYNC, "inherit_sync", &xfs_params.inherit_sync.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.inherit_sync.min, &xfs_params.inherit_sync.max},
- 
- 	{XFS_INHERIT_NODUMP, "inherit_nodump", &xfs_params.inherit_nodump.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.inherit_nodump.min, &xfs_params.inherit_nodump.max},
- 
- 	{XFS_INHERIT_NOATIME, "inherit_noatime", &xfs_params.inherit_noatim.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.inherit_noatim.min, &xfs_params.inherit_noatim.max},
- 
- 	{XFS_BUF_TIMER, "xfsbufd_centisecs", &xfs_params.xfs_buf_timer.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.xfs_buf_timer.min, &xfs_params.xfs_buf_timer.max},
- 
- 	{XFS_BUF_AGE, "age_buffer_centisecs", &xfs_params.xfs_buf_age.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.xfs_buf_age.min, &xfs_params.xfs_buf_age.max},
- 
- 	{XFS_INHERIT_NOSYM, "inherit_nosymlinks", &xfs_params.inherit_nosym.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.inherit_nosym.min, &xfs_params.inherit_nosym.max},
- 
- 	{XFS_ROTORSTEP, "rotorstep", &xfs_params.rotorstep.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.rotorstep.min, &xfs_params.rotorstep.max},
- 
- 	{XFS_INHERIT_NODFRG, "inherit_nodefrag", &xfs_params.inherit_nodfrg.val,
- 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.inherit_nodfrg.min, &xfs_params.inherit_nodfrg.max},
- 
- 	/* please keep this the last entry */
- #ifdef CONFIG_PROC_FS
- 	{XFS_STATS_CLEAR, "stats_clear", &xfs_params.stats_clear.val,
- 	sizeof(int), 0644, NULL, &xfs_stats_clear_proc_handler,
--	&sysctl_intvec, NULL,
-+	NULL, &sysctl_intvec, NULL,
- 	&xfs_params.stats_clear.min, &xfs_params.stats_clear.max},
- #endif /* CONFIG_PROC_FS */
- 
---- linux-2.6.20.1/fs/xfs/linux-2.6/xfs_vnode.c	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/linux-2.6/xfs_vnode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/linux-2.6/xfs_vnode.c	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/linux-2.6/xfs_vnode.c	2007-04-01 17:29:46 +0200
 @@ -119,6 +119,7 @@ vn_revalidate_core(
  	inode->i_nlink	    = vap->va_nlink;
  	inode->i_uid	    = vap->va_uid;
@@ -9708,8 +9716,8 @@
  	if (vap->va_xflags & XFS_XFLAG_APPEND)
  		inode->i_flags |= S_APPEND;
  	else
---- linux-2.6.20.1/fs/xfs/linux-2.6/xfs_vnode.h	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/linux-2.6/xfs_vnode.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/linux-2.6/xfs_vnode.h	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/linux-2.6/xfs_vnode.h	2007-04-01 17:29:47 +0200
 @@ -350,6 +350,7 @@ typedef struct bhv_vattr {
  	xfs_nlink_t	va_nlink;	/* number of references to file */
  	uid_t		va_uid;		/* owner user id */
@@ -9735,8 +9743,8 @@
  
  #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|\
---- linux-2.6.20.1/fs/xfs/quota/xfs_qm_syscalls.c	2006-09-20 16:58:40 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/quota/xfs_qm_syscalls.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/quota/xfs_qm_syscalls.c	2006-09-20 16:58:40 +0200
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/quota/xfs_qm_syscalls.c	2007-04-01 17:29:49 +0200
 @@ -17,6 +17,7 @@
   */
  
@@ -9781,8 +9789,8 @@
  		return XFS_ERROR(EPERM);
  
  	if ((newlim->d_fieldmask &
---- linux-2.6.20.1/fs/xfs/xfs_clnt.h	2006-06-18 04:54:50 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/xfs_clnt.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/xfs_clnt.h	2006-06-18 04:54:50 +0200
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/xfs_clnt.h	2007-04-01 17:29:47 +0200
 @@ -99,5 +99,7 @@ struct xfs_mount_args {
   */
  #define XFSMNT2_COMPAT_IOSIZE	0x00000001	/* don't report large preferred
@@ -9791,8 +9799,8 @@
 +
  
  #endif	/* __XFS_CLNT_H__ */
---- linux-2.6.20.1/fs/xfs/xfs_dinode.h	2006-09-20 16:58:40 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/xfs_dinode.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/xfs_dinode.h	2006-09-20 16:58:40 +0200
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/xfs_dinode.h	2007-04-01 17:29:46 +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 */
@@ -9830,8 +9838,8 @@
 +	 XFS_DIFLAG_IUNLINK)
  
  #endif	/* __XFS_DINODE_H__ */
---- linux-2.6.20.1/fs/xfs/xfs_fs.h	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/xfs_fs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/xfs_fs.h	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/xfs_fs.h	2007-04-01 17:29:46 +0200
 @@ -66,6 +66,8 @@ struct fsxattr {
  #define XFS_XFLAG_EXTSIZE	0x00000800	/* extent size allocator hint */
  #define XFS_XFLAG_EXTSZINHERIT	0x00001000	/* inherit inode extent size */
@@ -9851,8 +9859,8 @@
  	__u32		bs_dmevmask;	/* DMIG event mask		*/
  	__u16		bs_dmstate;	/* DMIG state info		*/
  	__u16		bs_aextents;	/* attribute number of extents	*/
---- linux-2.6.20.1/fs/xfs/xfs_inode.c	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/xfs_inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/xfs_inode.c	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/xfs_inode.c	2007-04-01 17:30:01 +0200
 @@ -50,6 +50,7 @@
  #include "xfs_mac.h"
  #include "xfs_acl.h"
@@ -9918,8 +9926,8 @@
  	ip->i_d.di_projid = prid;
  	memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad));
  
---- linux-2.6.20.1/fs/xfs/xfs_itable.c	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/xfs_itable.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/xfs_itable.c	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/xfs_itable.c	2007-04-01 17:29:46 +0200
 @@ -89,6 +89,7 @@ xfs_bulkstat_one_iget(
  	buf->bs_mode = dic->di_mode;
  	buf->bs_uid = dic->di_uid;
@@ -9936,8 +9944,8 @@
  	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);
---- linux-2.6.20.1/fs/xfs/xfs_mount.h	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/xfs_mount.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/xfs_mount.h	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/xfs_mount.h	2007-04-01 17:29:47 +0200
 @@ -460,6 +460,7 @@ typedef struct xfs_mount {
  #define XFS_MOUNT_NO_PERCPU_SB	(1ULL << 23)	/* don't use per-cpu superblock
  						   counters */
@@ -9946,8 +9954,8 @@
  
  /*
   * Default minimum read and write sizes.
---- linux-2.6.20.1/fs/xfs/xfs_vfsops.c	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/xfs_vfsops.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/fs/xfs/xfs_vfsops.c	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/xfs_vfsops.c	2007-04-01 17:29:47 +0200
 @@ -300,6 +300,8 @@ xfs_start_flags(
  
  	if (ap->flags2 & XFSMNT2_COMPAT_IOSIZE)
@@ -9996,8 +10004,8 @@
  		} else if (!strcmp(this_char, "osyncisdsync")) {
  			/* no-op, this is now the default */
  			cmn_err(CE_WARN,
---- linux-2.6.20.1/fs/xfs/xfs_vnodeops.c	2006-11-30 21:19:29 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/fs/xfs/xfs_vnodeops.c	2007-02-15 00:05:56 +0100
+--- linux-2.6.20.4/fs/xfs/xfs_vnodeops.c	2006-11-30 21:19:29 +0100
++++ linux-2.6.20.4-vs2.2.0/fs/xfs/xfs_vnodeops.c	2007-04-01 17:29:47 +0200
 @@ -160,6 +160,7 @@ xfs_getattr(
  	vap->va_mode = ip->i_d.di_mode;
  	vap->va_uid = ip->i_d.di_uid;
@@ -10093,8 +10101,8 @@
  			if (vap->va_xflags & XFS_XFLAG_APPEND)
  				di_flags |= XFS_DIFLAG_APPEND;
  			if (vap->va_xflags & XFS_XFLAG_SYNC)
---- linux-2.6.20.1/include/asm-arm/tlb.h	2006-06-18 04:54:58 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-arm/tlb.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-arm/tlb.h	2006-06-18 04:54:58 +0200
++++ linux-2.6.20.4-vs2.2.0/include/asm-arm/tlb.h	2007-04-01 17:29:38 +0200
 @@ -28,6 +28,7 @@
  #else /* !CONFIG_MMU */
  
@@ -10103,8 +10111,8 @@
  
  /*
   * TLB handling.  This allows us to remove pages from the page
---- linux-2.6.20.1/include/asm-arm26/tlb.h	2006-01-03 17:30:02 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-arm26/tlb.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-arm26/tlb.h	2006-01-03 17:30:02 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-arm26/tlb.h	2007-04-01 17:29:38 +0200
 @@ -3,6 +3,7 @@
  
  #include <asm/pgalloc.h>
@@ -10113,8 +10121,8 @@
  
  /*
   * TLB handling.  This allows us to remove pages from the page
---- linux-2.6.20.1/include/asm-arm26/unistd.h	2007-02-06 03:01:35 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-arm26/unistd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-arm26/unistd.h	2007-02-06 03:01:35 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-arm26/unistd.h	2007-04-01 17:29:39 +0200
 @@ -302,6 +302,8 @@
  #define __NR_mq_getsetattr		(__NR_SYSCALL_BASE+279)
  #define __NR_waitid			(__NR_SYSCALL_BASE+280)
@@ -10124,8 +10132,8 @@
  /*
   * The following SWIs are ARM private. FIXME - make appropriate for arm26
   */
---- linux-2.6.20.1/include/asm-generic/tlb.h	2006-11-30 21:19:31 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-generic/tlb.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-generic/tlb.h	2006-11-30 21:19:31 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-generic/tlb.h	2007-04-01 17:29:38 +0200
 @@ -14,6 +14,7 @@
  #define _ASM_GENERIC__TLB_H
  
@@ -10134,19 +10142,8 @@
  #include <asm/pgalloc.h>
  #include <asm/tlbflush.h>
  
---- linux-2.6.20.1/include/asm-i386/elf.h	2007-02-06 03:01:37 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-i386/elf.h	2007-02-06 03:05:22 +0100
-@@ -75,7 +75,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.  */
- 
--#define ELF_ET_DYN_BASE         (TASK_SIZE / 3 * 2)
-+#define ELF_ET_DYN_BASE		((TASK_UNMAPPED_BASE) * 2)
- 
- /* regs is struct pt_regs, pr_reg is elf_gregset_t (which is
-    now struct_user_regs, they are different) */
---- linux-2.6.20.1/include/asm-ia64/tlb.h	2006-09-20 16:58:40 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-ia64/tlb.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-ia64/tlb.h	2006-09-20 16:58:40 +0200
++++ linux-2.6.20.4-vs2.2.0/include/asm-ia64/tlb.h	2007-04-01 17:29:38 +0200
 @@ -40,6 +40,7 @@
  #include <linux/mm.h>
  #include <linux/pagemap.h>
@@ -10155,8 +10152,8 @@
  
  #include <asm/pgalloc.h>
  #include <asm/processor.h>
---- linux-2.6.20.1/include/asm-powerpc/systbl.h	2006-11-30 21:19:33 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-powerpc/systbl.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-powerpc/systbl.h	2006-11-30 21:19:33 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-powerpc/systbl.h	2007-04-01 17:29:39 +0200
 @@ -260,7 +260,7 @@ COMPAT_SYS_SPU(fstatfs64)
  SYSX(sys_ni_syscall, ppc_fadvise64_64, ppc_fadvise64_64)
  PPC_SYS_SPU(rtas)
@@ -10166,8 +10163,8 @@
  COMPAT_SYS(migrate_pages)
  COMPAT_SYS(mbind)
  COMPAT_SYS(get_mempolicy)
---- linux-2.6.20.1/include/asm-powerpc/unistd.h	2007-02-06 03:01:44 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-powerpc/unistd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-powerpc/unistd.h	2007-02-06 03:01:44 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-powerpc/unistd.h	2007-04-01 17:29:39 +0200
 @@ -275,7 +275,7 @@
  #endif
  #define __NR_rtas		255
@@ -10177,8 +10174,8 @@
  #define __NR_migrate_pages	258
  #define __NR_mbind		259
  #define __NR_get_mempolicy	260
---- linux-2.6.20.1/include/asm-s390/unistd.h	2007-02-06 03:01:45 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-s390/unistd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-s390/unistd.h	2007-02-06 03:01:45 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-s390/unistd.h	2007-04-01 17:29:39 +0200
 @@ -202,7 +202,7 @@
  #define __NR_clock_gettime	(__NR_timer_create+6)
  #define __NR_clock_getres	(__NR_timer_create+7)
@@ -10188,8 +10185,8 @@
  #define __NR_statfs64		265
  #define __NR_fstatfs64		266
  #define __NR_remap_file_pages	267
---- linux-2.6.20.1/include/asm-sparc/unistd.h	2007-02-06 03:01:49 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-sparc/unistd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-sparc/unistd.h	2007-02-06 03:01:49 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-sparc/unistd.h	2007-04-01 17:29:39 +0200
 @@ -283,7 +283,7 @@
  #define __NR_timer_getoverrun	264
  #define __NR_timer_delete	265
@@ -10199,8 +10196,8 @@
  #define __NR_io_setup		268
  #define __NR_io_destroy		269
  #define __NR_io_submit		270
---- linux-2.6.20.1/include/asm-sparc64/tlb.h	2006-09-20 16:58:43 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-sparc64/tlb.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-sparc64/tlb.h	2006-09-20 16:58:43 +0200
++++ linux-2.6.20.4-vs2.2.0/include/asm-sparc64/tlb.h	2007-04-01 17:29:38 +0200
 @@ -2,6 +2,7 @@
  #define _SPARC64_TLB_H
  
@@ -10209,8 +10206,8 @@
  #include <asm/pgalloc.h>
  #include <asm/tlbflush.h>
  #include <asm/mmu_context.h>
---- linux-2.6.20.1/include/asm-sparc64/unistd.h	2007-02-06 03:01:49 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-sparc64/unistd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-sparc64/unistd.h	2007-02-06 03:01:49 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-sparc64/unistd.h	2007-04-01 17:29:39 +0200
 @@ -285,7 +285,7 @@
  #define __NR_timer_getoverrun	264
  #define __NR_timer_delete	265
@@ -10220,8 +10217,8 @@
  #define __NR_io_setup		268
  #define __NR_io_destroy		269
  #define __NR_io_submit		270
---- linux-2.6.20.1/include/asm-x86_64/unistd.h	2007-02-06 03:01:50 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/asm-x86_64/unistd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/asm-x86_64/unistd.h	2007-02-06 03:01:50 +0100
++++ linux-2.6.20.4-vs2.2.0/include/asm-x86_64/unistd.h	2007-04-01 17:29:39 +0200
 @@ -532,7 +532,7 @@ __SYSCALL(__NR_tgkill, sys_tgkill)
  #define __NR_utimes		235
  __SYSCALL(__NR_utimes, sys_utimes)
@@ -10231,8 +10228,8 @@
  #define __NR_mbind 		237
  __SYSCALL(__NR_mbind, sys_mbind)
  #define __NR_set_mempolicy 	238
---- linux-2.6.20.1/include/linux/Kbuild	2007-02-06 03:01:50 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/Kbuild	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/Kbuild	2007-02-06 03:01:50 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/Kbuild	2007-04-01 17:29:39 +0200
 @@ -339,3 +339,6 @@ unifdef-y += wireless.h
  unifdef-y += xfrm.h
  
@@ -10240,8 +10237,8 @@
 +
 +header-y += vserver/
 +
---- linux-2.6.20.1/include/linux/capability.h	2006-06-18 04:55:15 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/capability.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/capability.h	2006-06-18 04:55:15 +0200
++++ linux-2.6.20.4-vs2.2.0/include/linux/capability.h	2007-04-01 17:29:39 +0200
 @@ -235,6 +235,7 @@ typedef __u32 kernel_cap_t;
     arbitrary SCSI commands */
  /* Allow setting encryption key on loopback filesystem */
@@ -10262,8 +10259,8 @@
  #ifdef __KERNEL__
  /* 
   * Bounding set
---- linux-2.6.20.1/include/linux/devpts_fs.h	2004-08-14 12:55:59 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/devpts_fs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/devpts_fs.h	2004-08-14 12:55:59 +0200
++++ linux-2.6.20.4-vs2.2.0/include/linux/devpts_fs.h	2007-04-01 17:30:04 +0200
 @@ -30,5 +30,7 @@ static inline void devpts_pty_kill(int n
  
  #endif
@@ -10272,8 +10269,8 @@
 +
  
  #endif /* _LINUX_DEVPTS_FS_H */
---- linux-2.6.20.1/include/linux/ext2_fs.h	2006-11-30 21:19:37 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/ext2_fs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/ext2_fs.h	2006-11-30 21:19:37 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/ext2_fs.h	2007-04-01 17:29:47 +0200
 @@ -188,6 +188,8 @@ struct ext2_group_desc
  #define EXT2_NOTAIL_FL			FS_NOTAIL_FL	/* file tail should not be merged */
  #define EXT2_DIRSYNC_FL			FS_DIRSYNC_FL	/* dirsync behaviour (directories only) */
@@ -10312,8 +10309,8 @@
  
  
  #define clear_opt(o, opt)		o &= ~EXT2_MOUNT_##opt
---- linux-2.6.20.1/include/linux/ext3_fs.h	2006-11-30 21:19:37 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/ext3_fs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/ext3_fs.h	2006-11-30 21:19:37 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/ext3_fs.h	2007-04-01 17:29:47 +0200
 @@ -177,10 +177,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) */
@@ -10368,8 +10365,8 @@
  
  extern void ext3_read_inode (struct inode *);
  extern int  ext3_write_inode (struct inode *, int);
---- linux-2.6.20.1/include/linux/ext4_fs.h	2006-11-30 21:19:37 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/ext4_fs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/ext4_fs.h	2006-11-30 21:19:37 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/ext4_fs.h	2007-04-01 17:29:47 +0200
 @@ -189,11 +189,21 @@ struct ext4_group_desc
  #define EXT4_NOTAIL_FL			0x00008000 /* file tail should not be merged */
  #define EXT4_DIRSYNC_FL			0x00010000 /* dirsync behaviour (directories only) */
@@ -10427,8 +10424,8 @@
  
  extern void ext4_read_inode (struct inode *);
  extern int  ext4_write_inode (struct inode *, int);
---- linux-2.6.20.1/include/linux/fs.h	2007-02-06 03:01:50 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/fs.h	2007-02-06 03:39:12 +0100
+--- linux-2.6.20.4/include/linux/fs.h	2007-02-06 03:01:50 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/fs.h	2007-04-01 17:30:04 +0200
 @@ -121,6 +121,8 @@ extern int dir_notify_enable;
  #define MS_SLAVE	(1<<19)	/* change to slave */
  #define MS_SHARED	(1<<20)	/* change to shared */
@@ -10604,8 +10601,8 @@
  extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *);
  extern int simple_statfs(struct dentry *, struct kstatfs *);
  extern int simple_link(struct dentry *, struct inode *, struct dentry *);
---- linux-2.6.20.1/include/linux/init_task.h	2007-02-06 03:01:51 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/init_task.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/init_task.h	2007-02-06 03:01:51 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/init_task.h	2007-04-01 17:29:39 +0200
 @@ -141,6 +141,10 @@ extern struct group_info init_groups;
  	.pi_lock	= SPIN_LOCK_UNLOCKED,				\
  	INIT_TRACE_IRQFLAGS						\
@@ -10617,8 +10614,8 @@
  }
  
  
---- linux-2.6.20.1/include/linux/ipc.h	2006-11-30 21:19:38 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/ipc.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/ipc.h	2006-11-30 21:19:38 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/ipc.h	2007-04-01 17:30:02 +0200
 @@ -63,6 +63,7 @@ struct kern_ipc_perm
  	key_t		key;
  	uid_t		uid;
@@ -10627,8 +10624,8 @@
  	uid_t		cuid;
  	gid_t		cgid;
  	mode_t		mode; 
---- linux-2.6.20.1/include/linux/loop.h	2006-11-30 21:19:38 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/loop.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/loop.h	2006-11-30 21:19:38 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/loop.h	2007-04-01 17:30:01 +0200
 @@ -45,6 +45,7 @@ struct loop_device {
  	struct loop_func_table *lo_encryption;
  	__u32           lo_init[2];
@@ -10637,8 +10634,8 @@
  	int		(*ioctl)(struct loop_device *, int cmd, 
  				 unsigned long arg); 
  
---- linux-2.6.20.1/include/linux/major.h	2006-06-18 04:55:19 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/major.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/major.h	2006-06-18 04:55:19 +0200
++++ linux-2.6.20.4-vs2.2.0/include/linux/major.h	2007-04-01 17:29:58 +0200
 @@ -15,6 +15,7 @@
  #define HD_MAJOR		IDE0_MAJOR
  #define PTY_SLAVE_MAJOR		3
@@ -10647,8 +10644,8 @@
  #define TTYAUX_MAJOR		5
  #define LP_MAJOR		6
  #define VCS_MAJOR		7
---- linux-2.6.20.1/include/linux/mount.h	2007-02-06 03:01:51 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/mount.h	2007-02-06 03:41:22 +0100
+--- linux-2.6.20.4/include/linux/mount.h	2007-02-06 03:01:51 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/mount.h	2007-04-01 17:30:01 +0200
 @@ -28,12 +28,16 @@ struct mnt_namespace;
  #define MNT_NOATIME	0x08
  #define MNT_NODIRATIME	0x10
@@ -10674,8 +10671,8 @@
  };
  
  static inline struct vfsmount *mntget(struct vfsmount *mnt)
---- linux-2.6.20.1/include/linux/net.h	2007-02-06 03:01:51 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/net.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/net.h	2007-02-06 03:01:51 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/net.h	2007-04-01 17:29:42 +0200
 @@ -63,6 +63,7 @@ typedef enum {
  #define SOCK_NOSPACE		2
  #define SOCK_PASSCRED		3
@@ -10684,8 +10681,8 @@
  
  #ifndef ARCH_HAS_SOCKET_TYPES
  /**
---- linux-2.6.20.1/include/linux/nfs_mount.h	2005-08-29 22:25:42 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/nfs_mount.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/nfs_mount.h	2005-08-29 22:25:42 +0200
++++ linux-2.6.20.4-vs2.2.0/include/linux/nfs_mount.h	2007-04-01 17:30:04 +0200
 @@ -61,6 +61,7 @@ struct nfs_mount_data {
  #define NFS_MOUNT_NOACL		0x0800	/* 4 */
  #define NFS_MOUNT_STRICTLOCK	0x1000	/* reserved for NFSv4 */
@@ -10694,8 +10691,8 @@
  #define NFS_MOUNT_FLAGMASK	0xFFFF
  
  #endif
---- linux-2.6.20.1/include/linux/nsproxy.h	2007-02-06 03:01:51 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/nsproxy.h	2007-02-06 05:43:36 +0100
+--- linux-2.6.20.4/include/linux/nsproxy.h	2007-02-06 03:01:51 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/nsproxy.h	2007-04-01 17:30:03 +0200
 @@ -36,6 +36,11 @@ int copy_namespaces(int flags, struct ta
  void get_task_namespaces(struct task_struct *tsk);
  void free_nsproxy(struct nsproxy *ns);
@@ -10708,19 +10705,8 @@
  static inline void put_nsproxy(struct nsproxy *ns)
  {
  	if (atomic_dec_and_test(&ns->count)) {
---- linux-2.6.20.1/include/linux/percpu.h	2006-11-30 21:19:39 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/percpu.h	2007-02-06 03:05:22 +0100
-@@ -11,7 +11,7 @@
- 
- /* Enough to cover all DEFINE_PER_CPUs in kernel, including modules. */
- #ifndef PERCPU_ENOUGH_ROOM
--#define PERCPU_ENOUGH_ROOM 32768
-+#define PERCPU_ENOUGH_ROOM 65536
- #endif
- 
- /*
---- linux-2.6.20.1/include/linux/pid.h	2007-02-06 03:01:51 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/pid.h	2007-02-24 21:13:02 +0100
+--- linux-2.6.20.4/include/linux/pid.h	2007-02-06 03:01:51 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/pid.h	2007-04-01 17:30:01 +0200
 @@ -8,7 +8,8 @@ enum pid_type
  	PIDTYPE_PID,
  	PIDTYPE_PGID,
@@ -10731,24 +10717,7 @@
  };
  
  /*
-@@ -106,13 +107,15 @@ static inline pid_t pid_nr(struct pid *p
- }
- 
- 
-+
- #define do_each_task_pid(who, type, task)				\
- 	do {								\
- 		struct hlist_node *pos___;				\
- 		struct pid *pid___ = find_pid(who);			\
- 		if (pid___ != NULL)					\
- 			hlist_for_each_entry_rcu((task), pos___,	\
--				&pid___->tasks[type], pids[type].node) {
-+				&pid___->tasks[type], pids[type].node)	\
-+			if (vx_check((task)->xid, VS_ADMIN_P|VS_IDENT)) {
- 
- #define while_each_task_pid(who, type, task)				\
- 			}						\
-@@ -124,7 +127,8 @@ static inline pid_t pid_nr(struct pid *p
+@@ -124,7 +125,8 @@ static inline pid_t pid_nr(struct pid *p
  		struct hlist_node *pos___;				\
  		if (pid != NULL)					\
  			hlist_for_each_entry_rcu((task), pos___,	\
@@ -10758,8 +10727,8 @@
  
  #define while_each_pid_task(pid, type, task)				\
  			}						\
---- linux-2.6.20.1/include/linux/proc_fs.h	2006-11-30 21:19:39 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/proc_fs.h	2007-02-06 05:02:33 +0100
+--- linux-2.6.20.4/include/linux/proc_fs.h	2006-11-30 21:19:39 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/proc_fs.h	2007-04-01 17:30:03 +0200
 @@ -54,6 +54,7 @@ struct proc_dir_entry {
  	nlink_t nlink;
  	uid_t uid;
@@ -10789,8 +10758,8 @@
  	int fd;
  	union proc_op op;
  	struct proc_dir_entry *pde;
---- linux-2.6.20.1/include/linux/reiserfs_fs.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/reiserfs_fs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/reiserfs_fs.h	2007-02-06 03:01:52 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/reiserfs_fs.h	2007-04-01 17:29:46 +0200
 @@ -821,6 +821,10 @@ struct stat_data_v1 {
  #define REISERFS_COMPR_FL     FS_COMPR_FL
  #define REISERFS_NOTAIL_FL    FS_NOTAIL_FL
@@ -10825,8 +10794,8 @@
  
  /* namei.c */
  void set_de_name_and_namelen(struct reiserfs_dir_entry *de);
---- linux-2.6.20.1/include/linux/reiserfs_fs_sb.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/reiserfs_fs_sb.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/reiserfs_fs_sb.h	2007-02-06 03:01:52 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/reiserfs_fs_sb.h	2007-04-01 17:29:47 +0200
 @@ -457,6 +457,7 @@ enum reiserfs_mount_options {
  	REISERFS_POSIXACL,
  	REISERFS_BARRIER_NONE,
@@ -10835,8 +10804,8 @@
  
  	/* Actions on error */
  	REISERFS_ERROR_PANIC,
---- linux-2.6.20.1/include/linux/sched.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/sched.h	2007-02-06 03:42:34 +0100
+--- linux-2.6.20.4/include/linux/sched.h	2007-02-06 03:01:52 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/sched.h	2007-04-01 17:30:04 +0200
 @@ -26,6 +26,7 @@
  #define CLONE_STOPPED		0x02000000	/* Start in stopped state */
  #define CLONE_NEWUTS		0x04000000	/* New utsname group? */
@@ -10845,15 +10814,7 @@
  
  /*
   * Scheduling policies
-@@ -54,6 +55,7 @@ struct sched_param {
- #include <linux/cpumask.h>
- #include <linux/errno.h>
- #include <linux/nodemask.h>
-+// #include <linux/vs_base.h>
- 
- #include <asm/system.h>
- #include <asm/semaphore.h>
-@@ -93,7 +95,7 @@ struct futex_pi_state;
+@@ -93,7 +94,7 @@ struct futex_pi_state;
   * List of flags we want to share for kernel threads,
   * if only because they are not used by them anyway.
   */
@@ -10862,7 +10823,7 @@
  
  /*
   * These are the constant used to fake the fixed-point load-average
-@@ -145,12 +147,13 @@ extern unsigned long weighted_cpuload(co
+@@ -145,12 +146,13 @@ extern unsigned long weighted_cpuload(co
  #define TASK_UNINTERRUPTIBLE	2
  #define TASK_STOPPED		4
  #define TASK_TRACED		8
@@ -10880,7 +10841,7 @@
  
  #define __set_task_state(tsk, state_value)		\
  	do { (tsk)->state = (state_value); } while (0)
-@@ -274,27 +277,30 @@ extern void arch_unmap_area_topdown(stru
+@@ -274,27 +276,30 @@ extern void arch_unmap_area_topdown(stru
   * The mm counters are not protected by its page_table_lock,
   * so must be incremented atomically.
   */
@@ -10921,7 +10882,7 @@
  #define get_mm_rss(mm)					\
  	(get_mm_counter(mm, file_rss) + get_mm_counter(mm, anon_rss))
  #define update_hiwater_rss(mm)	do {			\
-@@ -352,6 +358,7 @@ struct mm_struct {
+@@ -352,6 +357,7 @@ struct mm_struct {
  
  	/* Architecture-specific MM context */
  	mm_context_t context;
@@ -10929,7 +10890,7 @@
  
  	/* Swap token stuff */
  	/*
-@@ -555,9 +562,10 @@ struct user_struct {
+@@ -555,9 +561,10 @@ struct user_struct {
  	/* Hash table maintenance information */
  	struct list_head uidhash_list;
  	uid_t uid;
@@ -10941,7 +10902,7 @@
  
  extern struct user_struct root_user;
  #define INIT_USER (&root_user)
-@@ -949,6 +957,14 @@ struct task_struct {
+@@ -949,6 +956,14 @@ struct task_struct {
  	
  	void *security;
  	struct audit_context *audit_context;
@@ -10956,7 +10917,7 @@
  	seccomp_t seccomp;
  
  /* Thread group tracking */
-@@ -1263,12 +1279,16 @@ extern struct task_struct init_task;
+@@ -1263,12 +1278,16 @@ extern struct task_struct init_task;
  
  extern struct   mm_struct init_mm;
  
@@ -10975,8 +10936,8 @@
  static inline struct user_struct *get_uid(struct user_struct *u)
  {
  	atomic_inc(&u->__count);
---- linux-2.6.20.1/include/linux/shmem_fs.h	2006-11-30 21:19:39 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/shmem_fs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/shmem_fs.h	2006-11-30 21:19:39 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/shmem_fs.h	2007-04-01 17:30:04 +0200
 @@ -8,6 +8,9 @@
  
  #define SHMEM_NR_DIRECT 16
@@ -10987,8 +10948,8 @@
  struct shmem_inode_info {
  	spinlock_t		lock;
  	unsigned long		flags;
---- linux-2.6.20.1/include/linux/stat.h	2006-11-30 21:19:40 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/stat.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/stat.h	2006-11-30 21:19:40 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/stat.h	2007-04-01 17:29:47 +0200
 @@ -63,6 +63,7 @@ struct kstat {
  	unsigned int	nlink;
  	uid_t		uid;
@@ -10997,8 +10958,8 @@
  	dev_t		rdev;
  	loff_t		size;
  	struct timespec  atime;
---- linux-2.6.20.1/include/linux/sunrpc/auth.h	2006-11-30 21:19:40 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/sunrpc/auth.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/sunrpc/auth.h	2006-11-30 21:19:40 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/sunrpc/auth.h	2007-04-01 17:30:04 +0200
 @@ -24,6 +24,7 @@
  struct auth_cred {
  	uid_t	uid;
@@ -11007,8 +10968,8 @@
  	struct group_info *group_info;
  };
  
---- linux-2.6.20.1/include/linux/sunrpc/clnt.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/sunrpc/clnt.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/sunrpc/clnt.h	2007-02-06 03:01:52 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/sunrpc/clnt.h	2007-04-01 17:30:04 +0200
 @@ -42,7 +42,8 @@ struct rpc_clnt {
  				cl_intr     : 1,/* interruptible */
  				cl_autobind : 1,/* use getport() */
@@ -11019,8 +10980,8 @@
  
  	struct rpc_rtt *	cl_rtt;		/* RTO estimator data */
  
---- linux-2.6.20.1/include/linux/syscalls.h	2006-11-30 21:19:40 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/syscalls.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/syscalls.h	2006-11-30 21:19:40 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/syscalls.h	2007-04-01 17:30:00 +0200
 @@ -294,6 +294,8 @@ asmlinkage long sys_symlink(const char _
  asmlinkage long sys_unlink(const char __user *pathname);
  asmlinkage long sys_rename(const char __user *oldname,
@@ -11030,8 +10991,8 @@
  asmlinkage long sys_chmod(const char __user *filename, mode_t mode);
  asmlinkage long sys_fchmod(unsigned int fd, mode_t mode);
  
---- linux-2.6.20.1/include/linux/sysctl.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/sysctl.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/sysctl.h	2007-02-06 03:01:52 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/sysctl.h	2007-04-01 17:29:47 +0200
 @@ -101,6 +101,7 @@ enum
  	KERN_CAP_BSET=14,	/* int: capability bounding set */
  	KERN_PANIC=15,		/* int: panic timeout */
@@ -11040,26 +11001,8 @@
  
  	KERN_SPARC_REBOOT=21,	/* reboot command on Sparc */
  	KERN_CTLALTDEL=22,	/* int: allow ctl-alt-del to reboot */
-@@ -923,6 +924,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);
- 
-+typedef int virt_handler (struct ctl_table *ctl, int write, xid_t xid,
-+			  void **datap, size_t *lenp);
-+
- extern int proc_dostring(ctl_table *, int, struct file *,
- 			 void __user *, size_t *, loff_t *);
- extern int proc_dointvec(ctl_table *, int, struct file *,
-@@ -1007,6 +1011,7 @@ struct ctl_table 
- 	mode_t mode;
- 	ctl_table *child;
- 	proc_handler *proc_handler;	/* Callback for text formatting */
-+	virt_handler *virt_handler;	/* Context virtualization */
- 	ctl_handler *strategy;		/* Callback function for all r/w */
- 	struct proc_dir_entry *de;	/* /proc control block */
- 	void *extra1;
---- linux-2.6.20.1/include/linux/sysfs.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/sysfs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/sysfs.h	2007-02-06 03:01:52 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/sysfs.h	2007-04-01 17:30:04 +0200
 @@ -13,6 +13,8 @@
  #include <linux/compiler.h>
  #include <asm/atomic.h>
@@ -11069,8 +11012,8 @@
  struct kobject;
  struct module;
  
---- linux-2.6.20.1/include/linux/time.h	2006-09-20 16:58:44 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/time.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/time.h	2006-09-20 16:58:44 +0200
++++ linux-2.6.20.4-vs2.2.0/include/linux/time.h	2007-04-01 17:29:38 +0200
 @@ -174,6 +174,9 @@ static inline void timespec_add_ns(struc
  	}
  	a->tv_nsec = ns;
@@ -11081,8 +11024,8 @@
  #endif /* __KERNEL__ */
  
  #define NFDBITS			__NFDBITS
---- linux-2.6.20.1/include/linux/types.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/types.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/types.h	2007-02-06 03:01:52 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/types.h	2007-04-01 17:29:39 +0200
 @@ -39,6 +39,9 @@ typedef __kernel_uid32_t	uid_t;
  typedef __kernel_gid32_t	gid_t;
  typedef __kernel_uid16_t        uid16_t;
@@ -11093,8 +11036,8 @@
  
  #ifdef CONFIG_UID16
  /* This is defined by include/asm-{arch}/posix_types.h */
---- linux-2.6.20.1/include/linux/vroot.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vroot.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vroot.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vroot.h	2007-04-01 17:29:58 +0200
 @@ -0,0 +1,51 @@
 +
 +/*
@@ -11103,7 +11046,7 @@
 + * written by Herbert Pötzl, 9/11/2002
 + * ported to 2.6 by Herbert Pötzl, 30/12/2004
 + *
-+ * Copyright (C) 2002-2005 by Herbert Pötzl.
++ * Copyright (C) 2002-2007 by Herbert Pötzl.
 + * Redistribution of this file is permitted under the
 + * GNU General Public License.
 + */
@@ -11147,8 +11090,8 @@
 +#define VROOT_CLR_DEV		0x5601
 +
 +#endif /* _LINUX_VROOT_H */
---- linux-2.6.20.1/include/linux/vs_base.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_base.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_base.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_base.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,9 @@
 +#ifndef _VS_BASE_H
 +#define _VS_BASE_H
@@ -11159,8 +11102,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_context.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_context.h	2007-02-06 04:58:45 +0100
+--- linux-2.6.20.4/include/linux/vs_context.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_context.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,220 @@
 +#ifndef _VS_CONTEXT_H
 +#define _VS_CONTEXT_H
@@ -11382,8 +11325,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_cowbl.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_cowbl.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_cowbl.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_cowbl.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,44 @@
 +#ifndef _VS_COWBL_H
 +#define _VS_COWBL_H
@@ -11429,8 +11372,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_cvirt.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_cvirt.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_cvirt.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_cvirt.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,49 @@
 +#ifndef _VS_CVIRT_H
 +#define _VS_CVIRT_H
@@ -11481,9 +11424,9 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_dlimit.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_dlimit.h	2007-02-06 03:05:22 +0100
-@@ -0,0 +1,214 @@
+--- linux-2.6.20.4/include/linux/vs_dlimit.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_dlimit.h	2007-04-01 17:29:38 +0200
+@@ -0,0 +1,207 @@
 +#ifndef _VS_DLIMIT_H
 +#define _VS_DLIMIT_H
 +
@@ -11592,13 +11535,6 @@
 +	ret = (dli->dl_inodes_used >= dli->dl_inodes_total);
 +	if (!ret)
 +		dli->dl_inodes_used++;
-+#if 0
-+	else
-+		vxwprintk("DLIMIT hit (%p,#%d), inode %d>=%d @ %s:%d",
-+			sb, tag,
-+			dli->dl_inodes_used, dli->dl_inodes_total,
-+			file, line);
-+#endif
 +	spin_unlock(&dli->dl_lock);
 +	put_dl_info(dli);
 +out:
@@ -11698,8 +11634,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_limit.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_limit.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_limit.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_limit.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,140 @@
 +#ifndef _VS_LIMIT_H
 +#define _VS_LIMIT_H
@@ -11841,8 +11777,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_memory.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_memory.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_memory.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_memory.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,159 @@
 +#ifndef _VS_MEMORY_H
 +#define _VS_MEMORY_H
@@ -12003,8 +11939,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_network.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_network.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_network.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_network.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,183 @@
 +#ifndef _NX_VS_NETWORK_H
 +#define _NX_VS_NETWORK_H
@@ -12189,8 +12125,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_pid.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_pid.h	2007-02-06 05:47:37 +0100
+--- linux-2.6.20.4/include/linux/vs_pid.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_pid.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,133 @@
 +#ifndef _VS_PID_H
 +#define _VS_PID_H
@@ -12269,7 +12205,7 @@
 +static inline
 +struct task_struct *vx_find_proc_task_by_pid(int pid)
 +{
-+	struct task_struct *task = find_task_by_pid(pid);
++	struct task_struct *task = find_task_by_real_pid(pid);
 +
 +	if (task && !vx_proc_task_visible(task)) {
 +		vxdprintk(VXD_CBIT(misc, 6),
@@ -12325,8 +12261,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_sched.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_sched.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_sched.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_sched.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,110 @@
 +#ifndef _VS_SCHED_H
 +#define _VS_SCHED_H
@@ -12438,8 +12374,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_socket.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_socket.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_socket.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_socket.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,67 @@
 +#ifndef _VS_SOCKET_H
 +#define _VS_SOCKET_H
@@ -12508,8 +12444,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_tag.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_tag.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_tag.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_tag.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,44 @@
 +#ifndef _VS_TAG_H
 +#define _VS_TAG_H
@@ -12555,8 +12491,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vs_time.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vs_time.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vs_time.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vs_time.h	2007-04-01 17:29:38 +0200
 @@ -0,0 +1,19 @@
 +#ifndef _VS_TIME_H
 +#define _VS_TIME_H
@@ -12577,8 +12513,8 @@
 +#else
 +#warning duplicate inclusion
 +#endif
---- linux-2.6.20.1/include/linux/vserver/Kbuild	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/Kbuild	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/Kbuild	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/Kbuild	2007-04-01 17:29:39 +0200
 @@ -0,0 +1,9 @@
 +
 +unifdef-y += context_cmd.h network_cmd.h space_cmd.h \
@@ -12589,8 +12525,8 @@
 +
 +unifdef-y += legacy.h
 +
---- linux-2.6.20.1/include/linux/vserver/base.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/base.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/base.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/base.h	2007-04-01 17:29:39 +0200
 @@ -0,0 +1,237 @@
 +#ifndef _VX_BASE_H
 +#define _VX_BASE_H
@@ -12829,8 +12765,8 @@
 +#define nx_info_state(v,m)	(__nx_state(v) & (m))
 +
 +#endif
---- linux-2.6.20.1/include/linux/vserver/cacct.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/cacct.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/cacct.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/cacct.h	2007-04-01 17:29:44 +0200
 @@ -0,0 +1,15 @@
 +#ifndef _VX_CACCT_H
 +#define _VX_CACCT_H
@@ -12847,8 +12783,8 @@
 +};
 +
 +#endif	/* _VX_CACCT_H */
---- linux-2.6.20.1/include/linux/vserver/cacct_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/cacct_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/cacct_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/cacct_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,23 @@
 +#ifndef _VX_CACCT_CMD_H
 +#define _VX_CACCT_CMD_H
@@ -12873,8 +12809,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CACCT_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/cacct_def.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/cacct_def.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/cacct_def.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/cacct_def.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,43 @@
 +#ifndef _VX_CACCT_DEF_H
 +#define _VX_CACCT_DEF_H
@@ -12919,8 +12855,8 @@
 +#endif
 +
 +#endif	/* _VX_CACCT_DEF_H */
---- linux-2.6.20.1/include/linux/vserver/cacct_int.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/cacct_int.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/cacct_int.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/cacct_int.h	2007-04-01 17:29:44 +0200
 @@ -0,0 +1,21 @@
 +#ifndef _VX_CACCT_INT_H
 +#define _VX_CACCT_INT_H
@@ -12943,8 +12879,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CACCT_INT_H */
---- linux-2.6.20.1/include/linux/vserver/context.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/context.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/context.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/context.h	2007-04-01 17:29:40 +0200
 @@ -0,0 +1,172 @@
 +#ifndef _VX_CONTEXT_H
 +#define _VX_CONTEXT_H
@@ -13118,8 +13054,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CONTEXT_H */
---- linux-2.6.20.1/include/linux/vserver/context_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/context_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/context_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/context_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,123 @@
 +#ifndef _VX_CONTEXT_CMD_H
 +#define _VX_CONTEXT_CMD_H
@@ -13244,8 +13180,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CONTEXT_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/cvirt.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/cvirt.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/cvirt.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/cvirt.h	2007-04-01 17:29:44 +0200
 @@ -0,0 +1,20 @@
 +#ifndef _VX_CVIRT_H
 +#define _VX_CVIRT_H
@@ -13267,8 +13203,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CVIRT_H */
---- linux-2.6.20.1/include/linux/vserver/cvirt_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/cvirt_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/cvirt_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/cvirt_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,53 @@
 +#ifndef _VX_CVIRT_CMD_H
 +#define _VX_CVIRT_CMD_H
@@ -13323,9 +13259,9 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CVIRT_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/cvirt_def.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/cvirt_def.h	2007-02-06 03:05:22 +0100
-@@ -0,0 +1,82 @@
+--- linux-2.6.20.4/include/linux/vserver/cvirt_def.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/cvirt_def.h	2007-04-01 17:29:49 +0200
+@@ -0,0 +1,81 @@
 +#ifndef _VX_CVIRT_DEF_H
 +#define _VX_CVIRT_DEF_H
 +
@@ -13363,7 +13299,6 @@
 +/* context sub struct */
 +
 +struct _vx_cvirt {
-+//	int max_threads;		/* maximum allowed threads */
 +	atomic_t nr_threads;		/* number of current threads */
 +	atomic_t nr_running;		/* number of running threads */
 +	atomic_t nr_uninterruptible;	/* number of uninterruptible threads */
@@ -13408,9 +13343,9 @@
 +#endif
 +
 +#endif	/* _VX_CVIRT_DEF_H */
---- linux-2.6.20.1/include/linux/vserver/debug.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/debug.h	2007-02-06 03:05:22 +0100
-@@ -0,0 +1,112 @@
+--- linux-2.6.20.4/include/linux/vserver/debug.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/debug.h	2007-04-01 17:29:48 +0200
+@@ -0,0 +1,117 @@
 +#ifndef _VX_DEBUG_H
 +#define _VX_DEBUG_H
 +
@@ -13432,6 +13367,14 @@
 +#define __FUNC__	__func__
 +
 +
++#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>" )
++
++
 +#ifdef	CONFIG_VSERVER_DEBUG
 +
 +extern unsigned int vx_debug_switch;
@@ -13448,7 +13391,6 @@
 +
 +
 +#define VX_LOGLEVEL	"vxD: "
-+#define VX_WARNLEVEL	KERN_WARNING "vxW: "
 +
 +#define vxdprintk(c,f,x...)					\
 +	do {							\
@@ -13469,21 +13411,6 @@
 +	} while (0)
 +
 +
-+#define vxwprintk(c,f,x...)					\
-+	do {							\
-+		if (c)						\
-+			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>" )
-+
-+
 +struct vx_info;
 +
 +void dump_vx_info(struct vx_info *, int);
@@ -13504,14 +13431,27 @@
 +#define vxdprintk(x...) do { } while (0)
 +#define vxlprintk(x...) do { } while (0)
 +#define vxfprintk(x...) do { } while (0)
-+#define vxwprintk(x...) do { } while (0)
-+
-+#define vxd_path	"<none>"
-+#define vxd_cond_path	vxd_path
 +
 +#endif	/* CONFIG_VSERVER_DEBUG */
 +
 +
++#ifdef	CONFIG_VSERVER_WARN
++
++#define VX_WARNLEVEL	KERN_WARNING "vxW: "
++
++#define vxwprintk(c,f,x...)					\
++	do {							\
++		if (c)						\
++			printk(VX_WARNLEVEL f "\n" , ##x);	\
++	} while (0)
++
++#else	/* CONFIG_VSERVER_WARN */
++
++#define vxwprintk(x...) do { } while (0)
++
++#endif	/* CONFIG_VSERVER_WARN */
++
++
 +#ifdef	CONFIG_VSERVER_DEBUG
 +#define vxd_assert_lock(l)	assert_spin_locked(l)
 +#define vxd_assert(c,f,x...)	vxlprintk(!(c), \
@@ -13523,8 +13463,8 @@
 +
 +
 +#endif /* _VX_DEBUG_H */
---- linux-2.6.20.1/include/linux/vserver/debug_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/debug_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/debug_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/debug_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,58 @@
 +#ifndef _VX_DEBUG_CMD_H
 +#define _VX_DEBUG_CMD_H
@@ -13584,8 +13524,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_DEBUG_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/dlimit.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/dlimit.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/dlimit.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/dlimit.h	2007-04-01 17:29:50 +0200
 @@ -0,0 +1,53 @@
 +#ifndef _VX_DLIMIT_H
 +#define _VX_DLIMIT_H
@@ -13640,8 +13580,8 @@
 +#else	/* _VX_DLIMIT_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_DLIMIT_H */
---- linux-2.6.20.1/include/linux/vserver/dlimit_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/dlimit_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/dlimit_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/dlimit_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,74 @@
 +#ifndef _VX_DLIMIT_CMD_H
 +#define _VX_DLIMIT_CMD_H
@@ -13717,8 +13657,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_DLIMIT_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/global.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/global.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/global.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/global.h	2007-04-01 17:30:02 +0200
 @@ -0,0 +1,18 @@
 +#ifndef _VX_GLOBAL_H
 +#define _VX_GLOBAL_H
@@ -13738,8 +13678,8 @@
 +
 +
 +#endif /* _VX_GLOBAL_H */
---- linux-2.6.20.1/include/linux/vserver/history.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/history.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/history.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/history.h	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,197 @@
 +#ifndef _VX_HISTORY_H
 +#define _VX_HISTORY_H
@@ -13938,8 +13878,8 @@
 +#endif /* CONFIG_VSERVER_HISTORY */
 +
 +#endif /* _VX_HISTORY_H */
---- linux-2.6.20.1/include/linux/vserver/inode.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/inode.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/inode.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/inode.h	2007-04-01 17:29:46 +0200
 @@ -0,0 +1,38 @@
 +#ifndef _VX_INODE_H
 +#define _VX_INODE_H
@@ -13979,8 +13919,8 @@
 +#else	/* _VX_INODE_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_INODE_H */
---- linux-2.6.20.1/include/linux/vserver/inode_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/inode_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/inode_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/inode_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,61 @@
 +#ifndef _VX_INODE_CMD_H
 +#define _VX_INODE_CMD_H
@@ -14043,8 +13983,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_INODE_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/legacy.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/legacy.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/legacy.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/legacy.h	2007-04-01 17:30:05 +0200
 @@ -0,0 +1,49 @@
 +#ifndef _VX_LEGACY_H
 +#define _VX_LEGACY_H
@@ -14095,8 +14035,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LEGACY_H */
---- linux-2.6.20.1/include/linux/vserver/limit.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/limit.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/limit.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/limit.h	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,68 @@
 +#ifndef _VX_LIMIT_H
 +#define _VX_LIMIT_H
@@ -14166,8 +14106,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_H */
---- linux-2.6.20.1/include/linux/vserver/limit_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/limit_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/limit_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/limit_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,69 @@
 +#ifndef _VX_LIMIT_CMD_H
 +#define _VX_LIMIT_CMD_H
@@ -14238,8 +14178,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/limit_def.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/limit_def.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/limit_def.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/limit_def.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,47 @@
 +#ifndef _VX_LIMIT_DEF_H
 +#define _VX_LIMIT_DEF_H
@@ -14288,8 +14228,8 @@
 +#endif
 +
 +#endif	/* _VX_LIMIT_DEF_H */
---- linux-2.6.20.1/include/linux/vserver/limit_int.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/limit_int.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/limit_int.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/limit_int.h	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,198 @@
 +#ifndef _VX_LIMIT_INT_H
 +#define _VX_LIMIT_INT_H
@@ -14489,8 +14429,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_INT_H */
---- linux-2.6.20.1/include/linux/vserver/monitor.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/monitor.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/monitor.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/monitor.h	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,95 @@
 +#ifndef _VX_MONITOR_H
 +#define _VX_MONITOR_H
@@ -14587,8 +14527,8 @@
 +
 +
 +#endif /* _VX_MONITOR_H */
---- linux-2.6.20.1/include/linux/vserver/network.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/network.h	2007-02-15 00:05:40 +0100
+--- linux-2.6.20.4/include/linux/vserver/network.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/network.h	2007-04-01 17:29:41 +0200
 @@ -0,0 +1,142 @@
 +#ifndef _VX_NETWORK_H
 +#define _VX_NETWORK_H
@@ -14732,8 +14672,8 @@
 +#else	/* _VX_NETWORK_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_NETWORK_H */
---- linux-2.6.20.1/include/linux/vserver/network_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/network_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/network_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/network_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,89 @@
 +#ifndef _VX_NETWORK_CMD_H
 +#define _VX_NETWORK_CMD_H
@@ -14824,8 +14764,25 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CONTEXT_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/sched.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/sched.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/percpu.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/percpu.h	2007-04-01 17:30:04 +0200
+@@ -0,0 +1,14 @@
++#ifndef _VX_PERCPU_H
++#define _VX_PERCPU_H
++
++#include "cvirt_def.h"
++#include "sched_def.h"
++
++struct	_vx_percpu {
++	struct _vx_cvirt_pc cvirt;
++	struct _vx_sched_pc sched;
++};
++
++#define	PERCPU_PERCTX	(sizeof(struct _vx_percpu))
++
++#endif	/* _VX_PERCPU_H */
+--- linux-2.6.20.4/include/linux/vserver/sched.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/sched.h	2007-04-01 17:29:45 +0200
 @@ -0,0 +1,26 @@
 +#ifndef _VX_SCHED_H
 +#define _VX_SCHED_H
@@ -14853,8 +14810,8 @@
 +#else	/* _VX_SCHED_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_SCHED_H */
---- linux-2.6.20.1/include/linux/vserver/sched_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/sched_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/sched_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/sched_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,108 @@
 +#ifndef _VX_SCHED_CMD_H
 +#define _VX_SCHED_CMD_H
@@ -14964,8 +14921,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_SCHED_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/sched_def.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/sched_def.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/sched_def.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/sched_def.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,68 @@
 +#ifndef _VX_SCHED_DEF_H
 +#define _VX_SCHED_DEF_H
@@ -15035,8 +14992,8 @@
 +#endif
 +
 +#endif	/* _VX_SCHED_DEF_H */
---- linux-2.6.20.1/include/linux/vserver/signal.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/signal.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/signal.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/signal.h	2007-04-01 17:29:45 +0200
 @@ -0,0 +1,14 @@
 +#ifndef _VX_SIGNAL_H
 +#define _VX_SIGNAL_H
@@ -15052,8 +15009,8 @@
 +#else	/* _VX_SIGNAL_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_SIGNAL_H */
---- linux-2.6.20.1/include/linux/vserver/signal_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/signal_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/signal_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/signal_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,43 @@
 +#ifndef _VX_SIGNAL_CMD_H
 +#define _VX_SIGNAL_CMD_H
@@ -15098,8 +15055,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_SIGNAL_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/space.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/space.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/space.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/space.h	2007-04-01 17:30:03 +0200
 @@ -0,0 +1,13 @@
 +#ifndef _VX_SPACE_H
 +#define _VX_SPACE_H
@@ -15114,8 +15071,8 @@
 +#else	/* _VX_SPACE_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_SPACE_H */
---- linux-2.6.20.1/include/linux/vserver/space_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/space_cmd.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/space_cmd.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/space_cmd.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,26 @@
 +#ifndef _VX_SPACE_CMD_H
 +#define _VX_SPACE_CMD_H
@@ -15143,8 +15100,8 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_SPACE_CMD_H */
---- linux-2.6.20.1/include/linux/vserver/switch.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/switch.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/linux/vserver/switch.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/switch.h	2007-04-01 17:29:41 +0200
 @@ -0,0 +1,95 @@
 +#ifndef _VX_SWITCH_H
 +#define _VX_SWITCH_H
@@ -15241,9 +15198,9 @@
 +#endif	/* __KERNEL__ */
 +
 +#endif	/* _VX_SWITCH_H */
---- linux-2.6.20.1/include/linux/vserver/tag.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/linux/vserver/tag.h	2007-02-06 03:05:22 +0100
-@@ -0,0 +1,153 @@
+--- linux-2.6.20.4/include/linux/vserver/tag.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/include/linux/vserver/tag.h	2007-04-01 17:29:47 +0200
+@@ -0,0 +1,140 @@
 +#ifndef _DX_TAG_H
 +#define _DX_TAG_H
 +
@@ -15331,19 +15288,6 @@
 +#endif
 +
 +
-+#ifdef CONFIG_TAGGING_RUNTIME
-+
-+#define MAX_UID		0xFFFFFFFF
-+#define MAX_GID		0xFFFFFFFF
-+
-+#define INOTAG_TAG(cond, uid, gid, tag)	(0)
-+
-+#define TAGINO_UID(cond, uid, tag)	(uid)
-+#define TAGINO_GID(cond, gid, tag)	(gid)
-+
-+#endif
-+
-+
 +#ifndef CONFIG_TAGGING_NONE
 +#define dx_current_fstag(sb)	\
 +	((sb)->s_flags & MS_TAGGED ? dx_current_tag(): 0)
@@ -15397,8 +15341,8 @@
 +#endif
 +
 +#endif /* _DX_TAG_H */
---- linux-2.6.20.1/include/net/af_unix.h	2006-09-20 16:58:44 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/net/af_unix.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/net/af_unix.h	2006-09-20 16:58:44 +0200
++++ linux-2.6.20.4-vs2.2.0/include/net/af_unix.h	2007-04-01 17:29:42 +0200
 @@ -4,6 +4,7 @@
  #include <linux/socket.h>
  #include <linux/un.h>
@@ -15449,8 +15393,8 @@
  }
  
  #define forall_unix_sockets(i, s) \
---- linux-2.6.20.1/include/net/inet_hashtables.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/net/inet_hashtables.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/net/inet_hashtables.h	2007-02-06 03:01:52 +0100
++++ linux-2.6.20.4-vs2.2.0/include/net/inet_hashtables.h	2007-04-01 17:29:41 +0200
 @@ -271,6 +271,26 @@ static inline int inet_iif(const struct 
  	return ((struct rtable *)skb->dst)->rt_iif;
  }
@@ -15478,8 +15422,8 @@
  extern struct sock *__inet_lookup_listener(struct inet_hashinfo *hashinfo,
  					   const __be32 daddr,
  					   const unsigned short hnum,
---- linux-2.6.20.1/include/net/inet_sock.h	2006-11-30 21:19:40 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/net/inet_sock.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/net/inet_sock.h	2006-11-30 21:19:40 +0100
++++ linux-2.6.20.4-vs2.2.0/include/net/inet_sock.h	2007-04-01 17:29:41 +0200
 @@ -112,6 +112,7 @@ struct inet_sock {
  	/* Socket demultiplex comparisons on incoming packets. */
  	__be32			daddr;
@@ -15488,8 +15432,8 @@
  	__be16			dport;
  	__u16			num;
  	__be32			saddr;
---- linux-2.6.20.1/include/net/inet_timewait_sock.h	2007-02-06 03:01:52 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/net/inet_timewait_sock.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/net/inet_timewait_sock.h	2007-03-17 23:20:39 +0100
++++ linux-2.6.20.4-vs2.2.0/include/net/inet_timewait_sock.h	2007-04-01 17:29:41 +0200
 @@ -115,6 +115,10 @@ struct inet_timewait_sock {
  #define tw_refcnt		__tw_common.skc_refcnt
  #define tw_hash			__tw_common.skc_hash
@@ -15501,8 +15445,8 @@
  	volatile unsigned char	tw_substate;
  	/* 3 bits hole, try to pack */
  	unsigned char		tw_rcv_wscale;
---- linux-2.6.20.1/include/net/route.h	2006-11-30 21:19:40 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/net/route.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/net/route.h	2006-11-30 21:19:40 +0100
++++ linux-2.6.20.4-vs2.2.0/include/net/route.h	2007-04-01 17:29:41 +0200
 @@ -27,12 +27,16 @@
  #include <net/dst.h>
  #include <net/inetpeer.h>
@@ -15609,8 +15553,8 @@
  		err = __ip_route_output_key(rp, &fl);
  		if (err)
  			return err;
---- linux-2.6.20.1/include/net/sock.h	2007-02-06 03:01:53 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/include/net/sock.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/include/net/sock.h	2007-02-06 03:01:53 +0100
++++ linux-2.6.20.4-vs2.2.0/include/net/sock.h	2007-04-01 17:29:42 +0200
 @@ -119,6 +119,10 @@ struct sock_common {
  	atomic_t		skc_refcnt;
  	unsigned int		skc_hash;
@@ -15633,18 +15577,36 @@
  	unsigned char		sk_shutdown : 2,
  				sk_no_check : 2,
  				sk_userlocks : 4;
---- linux-2.6.20.1/init/Makefile	2006-09-20 16:58:44 +0200
-+++ linux-2.6.20.1-vs2.2.0-rc15/init/Makefile	2007-02-06 03:05:22 +0100
-@@ -15,6 +15,7 @@ clean-files := ../include/linux/compile.
- 
- # dependencies on generated files need to be listed explicitly
- 
-+$(obj)/main.o: include/linux/compile.h
- $(obj)/version.o: include/linux/compile.h
- 
- # compile.h changes depending on hostname, generation number, etc,
---- linux-2.6.20.1/ipc/mqueue.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/ipc/mqueue.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/init/main.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/init/main.c	2007-04-01 17:30:04 +0200
+@@ -52,6 +52,7 @@
+ #include <linux/lockdep.h>
+ #include <linux/pid_namespace.h>
+ #include <linux/device.h>
++#include <linux/vserver/percpu.h>
+ 
+ #include <asm/io.h>
+ #include <asm/bugs.h>
+@@ -359,7 +360,7 @@ EXPORT_SYMBOL(__per_cpu_offset);
+ 
+ static void __init setup_per_cpu_areas(void)
+ {
+-	unsigned long size, i;
++	unsigned long size, vspc, i;
+ 	char *ptr;
+ 	unsigned long nr_possible_cpus = num_possible_cpus();
+ 
+@@ -369,6 +370,8 @@ static void __init setup_per_cpu_areas(v
+ 	if (size < PERCPU_ENOUGH_ROOM)
+ 		size = PERCPU_ENOUGH_ROOM;
+ #endif
++	vspc = PERCPU_PERCTX * CONFIG_VSERVER_CONTEXTS;
++	size = ALIGN(size + vspc, SMP_CACHE_BYTES);
+ 	ptr = alloc_bootmem(size * nr_possible_cpus);
+ 
+ 	for_each_possible_cpu(i) {
+--- linux-2.6.20.4/ipc/mqueue.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/ipc/mqueue.c	2007-04-01 17:30:02 +0200
 @@ -29,6 +29,8 @@
  #include <linux/audit.h>
  #include <linux/signal.h>
@@ -15700,8 +15662,8 @@
  out_err:
  	dput(dentry);
  
---- linux-2.6.20.1/ipc/msg.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/ipc/msg.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/ipc/msg.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/ipc/msg.c	2007-04-01 17:30:02 +0200
 @@ -36,6 +36,7 @@
  #include <linux/seq_file.h>
  #include <linux/mutex.h>
@@ -15718,18 +15680,8 @@
  
  	msq->q_perm.security = NULL;
  	retval = security_msg_queue_alloc(msq);
-@@ -925,6 +927,9 @@ static int sysvipc_msg_proc_show(struct 
- {
- 	struct msg_queue *msq = it;
- 
-+	if (!vx_check(msq->q_perm.xid, VS_WATCH_P|VS_IDENT))
-+		return 0;
-+
- 	return seq_printf(s,
- 			"%10d %10d  %4o  %10lu %10lu %5u %5u %5u %5u %5u %5u %10lu %10lu %10lu\n",
- 			msq->q_perm.key,
---- linux-2.6.20.1/ipc/sem.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/ipc/sem.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/ipc/sem.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/ipc/sem.c	2007-04-01 17:30:02 +0200
 @@ -83,6 +83,8 @@
  #include <linux/seq_file.h>
  #include <linux/mutex.h>
@@ -15767,18 +15719,8 @@
  	size = sizeof (*sma) + sma->sem_nsems * sizeof (struct sem);
  	security_sem_free(sma);
  	ipc_rcu_putref(sma);
-@@ -1402,6 +1411,9 @@ static int sysvipc_sem_proc_show(struct 
- {
- 	struct sem_array *sma = it;
- 
-+	if (!vx_check(sma->sem_perm.xid, VS_WATCH_P|VS_IDENT))
-+		return 0;
-+
- 	return seq_printf(s,
- 			  "%10d %10d  %4o %10lu %5u %5u %5u %5u %10lu %10lu\n",
- 			  sma->sem_perm.key,
---- linux-2.6.20.1/ipc/shm.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/ipc/shm.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/ipc/shm.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/ipc/shm.c	2007-04-01 17:30:02 +0200
 @@ -37,6 +37,8 @@
  #include <linux/seq_file.h>
  #include <linux/mutex.h>
@@ -15834,18 +15776,8 @@
  	shm_unlock(shp);
  	return shp->id;
  
-@@ -993,6 +1006,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"
- 
-+	if (!vx_check(shp->shm_perm.xid, VS_WATCH_P|VS_IDENT))
-+		return 0;
-+
- 	if (sizeof(size_t) <= sizeof(int))
- 		format = SMALL_STRING;
- 	else
---- linux-2.6.20.1/ipc/util.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/ipc/util.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/ipc/util.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/ipc/util.c	2007-04-01 17:30:02 +0200
 @@ -33,6 +33,8 @@
  #include <linux/proc_fs.h>
  #include <linux/audit.h>
@@ -15871,29 +15803,8 @@
  	kfree(ns);
  }
  #endif
-@@ -261,7 +265,9 @@ int ipc_findkey(struct ipc_ids* ids, key
- 	 */
- 	for (id = 0; id <= max_id; id++) {
- 		p = ids->entries->p[id];
--		if(p==NULL)
-+		if (p==NULL)
-+			continue;
-+		if (!vx_check(p->xid, VS_WATCH_P|VS_IDENT))
- 			continue;
- 		if (key == p->key)
- 			return id;
-@@ -579,6 +585,9 @@ int ipcperms (struct kern_ipc_perm *ipcp
- 
- 	if (unlikely((err = audit_ipc_obj(ipcp))))
- 		return err;
-+
-+	if (!vx_check(ipcp->xid, VS_WATCH_P|VS_IDENT)) /* maybe just VS_IDENT? */
-+		return -1;
- 	requested_mode = (flag >> 6) | (flag >> 3) | flag;
- 	granted_mode = ipcp->mode;
- 	if (current->euid == ipcp->cuid || current->euid == ipcp->uid)
---- linux-2.6.20.1/kernel/Makefile	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/Makefile	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/Makefile	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/Makefile	2007-04-01 17:29:39 +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 rwsem.o latency.o nsproxy.o srcu.o
@@ -15903,8 +15814,8 @@
  obj-$(CONFIG_STACKTRACE) += stacktrace.o
  obj-y += time/
  obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
---- linux-2.6.20.1/kernel/capability.c	2006-11-30 21:19:43 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/capability.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/capability.c	2006-11-30 21:19:43 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/capability.c	2007-04-01 17:29:49 +0200
 @@ -12,6 +12,7 @@
  #include <linux/module.h>
  #include <linux/security.h>
@@ -15913,7 +15824,16 @@
  #include <asm/uaccess.h>
  
  unsigned securebits = SECUREBITS_DEFAULT; /* systemwide security settings */
-@@ -244,8 +245,12 @@ int __capable(struct task_struct *t, int
+@@ -101,6 +102,8 @@ static inline int cap_set_pg(int pgrp, k
+ 	int found = 0;
+ 
+ 	do_each_task_pid(pgrp, PIDTYPE_PGID, g) {
++		if (!vx_check(g->xid, VS_ADMIN_P | VS_IDENT))
++			continue;
+ 		target = g;
+ 		while_each_thread(g, target) {
+ 			if (!security_capset_check(target, effective,
+@@ -244,8 +247,12 @@ int __capable(struct task_struct *t, int
  }
  EXPORT_SYMBOL(__capable);
  
@@ -15926,8 +15846,8 @@
  	return __capable(current, cap);
  }
  EXPORT_SYMBOL(capable);
---- linux-2.6.20.1/kernel/compat.c	2006-11-30 21:19:43 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/compat.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/compat.c	2006-11-30 21:19:43 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/compat.c	2007-04-01 17:29:43 +0200
 @@ -846,7 +846,7 @@ asmlinkage long compat_sys_time(compat_t
  	compat_time_t i;
  	struct timeval tv;
@@ -15946,8 +15866,8 @@
  	return 0;
  }
  
---- linux-2.6.20.1/kernel/exit.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/exit.c	2007-02-24 21:13:02 +0100
+--- linux-2.6.20.4/kernel/exit.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/exit.c	2007-04-01 17:30:05 +0200
 @@ -42,6 +42,11 @@
  #include <linux/audit.h> /* for audit_free() */
  #include <linux/resource.h>
@@ -16028,8 +15948,8 @@
  	preempt_disable();
  	/* causes final put_task_struct in finish_task_switch(). */
  	tsk->state = TASK_DEAD;
---- linux-2.6.20.1/kernel/fork.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/fork.c	2007-02-15 00:05:56 +0100
+--- linux-2.6.20.4/kernel/fork.c	2007-03-25 00:56:55 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/fork.c	2007-04-01 17:30:02 +0200
 @@ -49,6 +49,11 @@
  #include <linux/delayacct.h>
  #include <linux/taskstats_kern.h>
@@ -16069,16 +15989,18 @@
  			vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file,
  								-pages);
  			continue;
-@@ -333,8 +342,6 @@ static struct mm_struct * mm_init(struct
+@@ -333,8 +342,8 @@ static struct mm_struct * mm_init(struct
  	INIT_LIST_HEAD(&mm->mmlist);
  	mm->core_waiters = 0;
  	mm->nr_ptes = 0;
 -	set_mm_counter(mm, file_rss, 0);
 -	set_mm_counter(mm, anon_rss, 0);
++	__set_mm_counter(mm, file_rss, 0);
++	__set_mm_counter(mm, anon_rss, 0);
  	spin_lock_init(&mm->page_table_lock);
  	rwlock_init(&mm->ioctx_list_lock);
  	mm->ioctx_list = NULL;
-@@ -343,6 +350,7 @@ static struct mm_struct * mm_init(struct
+@@ -343,6 +352,7 @@ static struct mm_struct * mm_init(struct
  
  	if (likely(!mm_alloc_pgd(mm))) {
  		mm->def_flags = 0;
@@ -16086,7 +16008,7 @@
  		return mm;
  	}
  	free_mm(mm);
-@@ -374,6 +382,7 @@ void fastcall __mmdrop(struct mm_struct 
+@@ -374,6 +384,7 @@ void fastcall __mmdrop(struct mm_struct 
  	BUG_ON(mm == &init_mm);
  	mm_free_pgd(mm);
  	destroy_context(mm);
@@ -16094,7 +16016,7 @@
  	free_mm(mm);
  }
  
-@@ -488,6 +497,7 @@ static struct mm_struct *dup_mm(struct t
+@@ -488,6 +499,7 @@ static struct mm_struct *dup_mm(struct t
  		goto fail_nomem;
  
  	memcpy(mm, oldmm, sizeof(*mm));
@@ -16102,7 +16024,7 @@
  
  	/* Initializing for Swap token stuff */
  	mm->token_priority = 0;
-@@ -519,6 +529,7 @@ fail_nocontext:
+@@ -519,6 +531,7 @@ fail_nocontext:
  	 * If init_new_context() failed, we cannot use mmput() to free the mm
  	 * because it calls destroy_context()
  	 */
@@ -16110,7 +16032,7 @@
  	mm_free_pgd(mm);
  	free_mm(mm);
  	return NULL;
-@@ -589,6 +600,7 @@ static inline struct fs_struct *__copy_f
+@@ -589,6 +602,7 @@ static inline struct fs_struct *__copy_f
  			fs->altroot = NULL;
  		}
  		read_unlock(&old->lock);
@@ -16118,7 +16040,7 @@
  	}
  	return fs;
  }
-@@ -707,6 +719,8 @@ static struct files_struct *dup_fd(struc
+@@ -707,6 +721,8 @@ static struct files_struct *dup_fd(struc
  		struct file *f = *old_fds++;
  		if (f) {
  			get_file(f);
@@ -16127,7 +16049,7 @@
  		} else {
  			/*
  			 * The fd may be claimed in the fd bitmap but not yet
-@@ -958,6 +972,8 @@ static struct task_struct *copy_process(
+@@ -958,6 +974,8 @@ static struct task_struct *copy_process(
  {
  	int retval;
  	struct task_struct *p = NULL;
@@ -16136,7 +16058,7 @@
  
  	if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
  		return ERR_PTR(-EINVAL);
-@@ -992,12 +1008,30 @@ static struct task_struct *copy_process(
+@@ -992,12 +1010,30 @@ static struct task_struct *copy_process(
  	DEBUG_LOCKS_WARN_ON(!p->hardirqs_enabled);
  	DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
  #endif
@@ -16168,7 +16090,7 @@
  	}
  
  	atomic_inc(&p->user->__count);
-@@ -1260,6 +1294,18 @@ static struct task_struct *copy_process(
+@@ -1260,6 +1296,18 @@ static struct task_struct *copy_process(
  
  	total_forks++;
  	spin_unlock(&current->sighand->siglock);
@@ -16187,7 +16109,7 @@
  	write_unlock_irq(&tasklist_lock);
  	proc_fork_connector(p);
  	return p;
-@@ -1301,6 +1347,9 @@ bad_fork_cleanup_count:
+@@ -1301,6 +1349,9 @@ bad_fork_cleanup_count:
  	put_group_info(p->group_info);
  	atomic_dec(&p->user->processes);
  	free_uid(p->user);
@@ -16197,7 +16119,7 @@
  bad_fork_free:
  	free_task(p);
  fork_out:
-@@ -1361,6 +1410,15 @@ long do_fork(unsigned long clone_flags,
+@@ -1361,6 +1412,15 @@ long do_fork(unsigned long clone_flags,
  
  	if (!pid)
  		return -EAGAIN;
@@ -16213,8 +16135,8 @@
  	nr = pid->nr;
  	if (unlikely(current->ptrace)) {
  		trace = fork_traceflag (clone_flags);
---- linux-2.6.20.1/kernel/kthread.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/kthread.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/kthread.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/kthread.c	2007-04-01 17:30:01 +0200
 @@ -126,7 +126,7 @@ static void keventd_create_kthread(struc
  	} else {
  		wait_for_completion(&create->started);
@@ -16224,8 +16146,8 @@
  		read_unlock(&tasklist_lock);
  	}
  	complete(&create->done);
---- linux-2.6.20.1/kernel/nsproxy.c	2007-02-06 03:01:55 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/nsproxy.c	2007-02-06 05:43:29 +0100
+--- linux-2.6.20.4/kernel/nsproxy.c	2007-02-06 03:01:55 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/nsproxy.c	2007-04-01 17:30:03 +0200
 @@ -20,14 +20,10 @@
  #include <linux/mnt_namespace.h>
  #include <linux/utsname.h>
@@ -16250,23 +16172,15 @@
  	return ns;
  }
  
-@@ -70,7 +67,6 @@ struct nsproxy *dup_namespaces(struct ns
- 		if (ns->pid_ns)
- 			get_pid_ns(ns->pid_ns);
- 	}
--
- 	return ns;
- }
- 
-@@ -145,5 +141,6 @@ void free_nsproxy(struct nsproxy *ns)
+@@ -145,5 +142,6 @@ void free_nsproxy(struct nsproxy *ns)
  		put_ipc_ns(ns->ipc_ns);
  	if (ns->pid_ns)
  		put_pid_ns(ns->pid_ns);
 +	atomic_dec(&vs_global_nsproxy);
  	kfree(ns);
  }
---- linux-2.6.20.1/kernel/pid.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/pid.c	2007-02-24 21:13:02 +0100
+--- linux-2.6.20.4/kernel/pid.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/pid.c	2007-04-01 17:30:01 +0200
 @@ -27,6 +27,7 @@
  #include <linux/bootmem.h>
  #include <linux/hash.h>
@@ -16304,8 +16218,8 @@
  }
  
  EXPORT_SYMBOL(find_task_by_pid_type);
---- linux-2.6.20.1/kernel/posix-timers.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/posix-timers.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/posix-timers.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/posix-timers.c	2007-04-01 17:30:01 +0200
 @@ -48,6 +48,7 @@
  #include <linux/wait.h>
  #include <linux/workqueue.h>
@@ -16345,9 +16259,8 @@
  	}
  
 -	return send_group_sigqueue(timr->it_sigev_signo, timr->sigq,
--				   timr->it_process);
 +	ret = send_group_sigqueue(timr->it_sigev_signo, timr->sigq,
-+				  timr->it_process);
+ 				   timr->it_process);
 +out:
 +	leave_vx_info(&vxis);
 +	put_vx_info(vxis.vxi);
@@ -16364,8 +16277,8 @@
  		 rtn->tgid != current->tgid ||
  		 (event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_SIGNAL))
  		return NULL;
---- linux-2.6.20.1/kernel/printk.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/printk.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/printk.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/printk.c	2007-04-01 17:30:03 +0200
 @@ -32,6 +32,7 @@
  #include <linux/bootmem.h>
  #include <linux/syscalls.h>
@@ -16429,8 +16342,8 @@
  		count = len;
  		if (count > log_buf_len)
  			count = log_buf_len;
---- linux-2.6.20.1/kernel/ptrace.c	2006-11-30 21:19:44 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/ptrace.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/ptrace.c	2006-11-30 21:19:44 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/ptrace.c	2007-04-01 17:29:40 +0200
 @@ -18,6 +18,7 @@
  #include <linux/ptrace.h>
  #include <linux/security.h>
@@ -16462,8 +16375,8 @@
  	if (request == PTRACE_ATTACH) {
  		ret = ptrace_attach(child);
  		goto out_put_task_struct;
---- linux-2.6.20.1/kernel/sched.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/sched.c	2007-02-06 05:05:39 +0100
+--- linux-2.6.20.4/kernel/sched.c	2007-03-10 20:34:01 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/sched.c	2007-04-01 17:29:49 +0200
 @@ -55,6 +55,8 @@
  #include <asm/tlb.h>
  
@@ -16804,8 +16717,8 @@
  			__activate_task(p, task_rq(p));
  			resched_task(rq->curr);
  		}
---- linux-2.6.20.1/kernel/sched_hard.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/sched_hard.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/sched_hard.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/sched_hard.h	2007-04-01 17:29:45 +0200
 @@ -0,0 +1,324 @@
 +
 +#ifdef CONFIG_VSERVER_IDLELIMIT
@@ -17131,8 +17044,8 @@
 +
 +#endif /* CONFIG_VSERVER_HARDCPU */
 +
---- linux-2.6.20.1/kernel/sched_mon.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/sched_mon.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/sched_mon.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/sched_mon.h	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,200 @@
 +
 +#include <linux/vserver/monitor.h>
@@ -17334,17 +17247,18 @@
 +
 +#endif /* CONFIG_VSERVER_MONITOR */
 +
---- linux-2.6.20.1/kernel/signal.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/signal.c	2007-02-06 03:55:21 +0100
-@@ -26,6 +26,7 @@
+--- linux-2.6.20.4/kernel/signal.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/signal.c	2007-04-01 17:30:01 +0200
+@@ -26,6 +26,8 @@
  #include <linux/freezer.h>
  #include <linux/pid_namespace.h>
  #include <linux/nsproxy.h>
 +#include <linux/vs_context.h>
++#include <linux/vs_pid.h>
  
  #include <asm/param.h>
  #include <asm/uaccess.h>
-@@ -581,17 +582,34 @@ static int check_kill_permission(int sig
+@@ -581,17 +583,34 @@ static int check_kill_permission(int sig
  				 struct task_struct *t)
  {
  	int error = -EINVAL;
@@ -17372,7 +17286,7 @@
  
 +	error = -ESRCH;
 +	if (!vx_check(vx_task_xid(t), VS_WATCH_P|VS_IDENT)) {
-+		vxwprintk(current->xid || VXD_CBIT(misc, 7),
++		vxdprintk(current->xid || VXD_CBIT(misc, 7),
 +			"signal %d[%p] xid mismatch %p[#%u,%u] xid=#%u",
 +			sig, info, t, vx_task_xid(t), t->pid, current->xid);
 +		return error;
@@ -17381,7 +17295,7 @@
  	error = security_task_kill(t, info, sig, 0);
  	if (!error)
  		audit_signal_info(sig, t); /* Let audit system see the signal */
-@@ -1129,7 +1147,7 @@ int kill_pid_info(int sig, struct siginf
+@@ -1129,7 +1148,7 @@ int kill_pid_info(int sig, struct siginf
  	}
  	p = pid_task(pid, PIDTYPE_PID);
  	error = -ESRCH;
@@ -17390,7 +17304,16 @@
  		error = group_send_sig_info(sig, info, p);
  	if (unlikely(acquired_tasklist_lock))
  		read_unlock(&tasklist_lock);
-@@ -1200,7 +1218,8 @@ static int kill_something_info(int sig, 
+@@ -1141,7 +1160,7 @@ static int kill_proc_info(int sig, struc
+ {
+ 	int error;
+ 	rcu_read_lock();
+-	error = kill_pid_info(sig, info, find_pid(pid));
++	error = kill_pid_info(sig, info, find_pid(vx_rmap_pid(pid)));
+ 	rcu_read_unlock();
+ 	return error;
+ }
+@@ -1200,7 +1219,8 @@ static int kill_something_info(int sig, 
  
  		read_lock(&tasklist_lock);
  		for_each_process(p) {
@@ -17400,7 +17323,7 @@
  				int err = group_send_sig_info(sig, info, p);
  				++count;
  				if (err != -EPERM)
-@@ -1890,6 +1909,11 @@ relock:
+@@ -1890,6 +1910,11 @@ relock:
  		if (current == child_reaper(current))
  			continue;
  
@@ -17412,8 +17335,8 @@
  		if (sig_kernel_stop(signr)) {
  			/*
  			 * The default action is to stop all threads in
---- linux-2.6.20.1/kernel/softirq.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/softirq.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/softirq.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/softirq.c	2007-04-01 17:29:38 +0200
 @@ -17,6 +17,7 @@
  #include <linux/kthread.h>
  #include <linux/rcupdate.h>
@@ -17422,17 +17345,9 @@
  
  #include <asm/irq.h>
  /*
---- linux-2.6.20.1/kernel/sys.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/sys.c	2007-02-06 03:58:00 +0100
-@@ -10,6 +10,7 @@
- #include <linux/mman.h>
- #include <linux/smp_lock.h>
- #include <linux/notifier.h>
-+#include <linux/kmod.h>
- #include <linux/reboot.h>
- #include <linux/prctl.h>
- #include <linux/highuid.h>
-@@ -33,6 +34,7 @@
+--- linux-2.6.20.4/kernel/sys.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/sys.c	2007-04-01 17:30:04 +0200
+@@ -33,6 +33,7 @@
  #include <linux/compat.h>
  #include <linux/syscalls.h>
  #include <linux/kprobes.h>
@@ -17440,7 +17355,7 @@
  
  #include <asm/uaccess.h>
  #include <asm/io.h>
-@@ -576,7 +578,10 @@ static int set_one_prio(struct task_stru
+@@ -576,7 +577,10 @@ static int set_one_prio(struct task_stru
  		goto out;
  	}
  	if (niceval < task_nice(p) && !can_nice(p, niceval)) {
@@ -17452,7 +17367,16 @@
  		goto out;
  	}
  	no_nice = security_task_setnice(p, niceval);
-@@ -628,7 +633,8 @@ asmlinkage long sys_setpriority(int whic
+@@ -620,6 +624,8 @@ asmlinkage long sys_setpriority(int whic
+ 			if (!who)
+ 				who = process_group(current);
+ 			do_each_task_pid(who, PIDTYPE_PGID, p) {
++				if (!vx_check(p->xid, VS_ADMIN_P | VS_IDENT))
++					continue;
+ 				error = set_one_prio(p, niceval, error);
+ 			} while_each_task_pid(who, PIDTYPE_PGID, p);
+ 			break;
+@@ -628,7 +634,8 @@ asmlinkage long sys_setpriority(int whic
  			if (!who)
  				who = current->uid;
  			else
@@ -17462,7 +17386,16 @@
  					goto out_unlock;	/* No processes for this user */
  
  			do_each_thread(g, p)
-@@ -686,7 +692,8 @@ asmlinkage long sys_getpriority(int whic
+@@ -676,6 +683,8 @@ asmlinkage long sys_getpriority(int whic
+ 			if (!who)
+ 				who = process_group(current);
+ 			do_each_task_pid(who, PIDTYPE_PGID, p) {
++				if (!vx_check(p->xid, VS_ADMIN_P | VS_IDENT))
++					continue;
+ 				niceval = 20 - task_nice(p);
+ 				if (niceval > retval)
+ 					retval = niceval;
+@@ -686,7 +695,8 @@ asmlinkage long sys_getpriority(int whic
  			if (!who)
  				who = current->uid;
  			else
@@ -17472,7 +17405,7 @@
  					goto out_unlock;	/* No processes for this user */
  
  			do_each_thread(g, p)
-@@ -799,6 +806,9 @@ void kernel_power_off(void)
+@@ -799,6 +809,9 @@ void kernel_power_off(void)
  	machine_power_off();
  }
  EXPORT_SYMBOL_GPL(kernel_power_off);
@@ -17482,7 +17415,7 @@
  /*
   * Reboot system call: for obvious reasons only root may call it,
   * and even root needs to set up some magic numbers in the registers
-@@ -829,6 +839,9 @@ asmlinkage long sys_reboot(int magic1, i
+@@ -829,6 +842,9 @@ asmlinkage long sys_reboot(int magic1, i
  	if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off)
  		cmd = LINUX_REBOOT_CMD_HALT;
  
@@ -17492,7 +17425,7 @@
  	lock_kernel();
  	switch (cmd) {
  	case LINUX_REBOOT_CMD_RESTART:
-@@ -1008,7 +1021,7 @@ static int set_user(uid_t new_ruid, int 
+@@ -1008,7 +1024,7 @@ static int set_user(uid_t new_ruid, int 
  {
  	struct user_struct *new_user;
  
@@ -17501,7 +17434,7 @@
  	if (!new_user)
  		return -EAGAIN;
  
-@@ -1363,15 +1376,18 @@ asmlinkage long sys_setpgid(pid_t pid, p
+@@ -1363,15 +1379,18 @@ asmlinkage long sys_setpgid(pid_t pid, p
  {
  	struct task_struct *p;
  	struct task_struct *group_leader = current->group_leader;
@@ -17521,7 +17454,7 @@
  	/* From this point forward we keep holding onto the tasklist lock
  	 * so that our parent does not change from under us. -DaveM
  	 */
-@@ -1405,20 +1421,20 @@ asmlinkage long sys_setpgid(pid_t pid, p
+@@ -1405,20 +1424,20 @@ asmlinkage long sys_setpgid(pid_t pid, p
  
  	if (pgid != pid) {
  		struct task_struct *g =
@@ -17547,7 +17480,7 @@
  	}
  
  	err = 0;
-@@ -1431,7 +1447,7 @@ out:
+@@ -1431,7 +1450,7 @@ out:
  asmlinkage long sys_getpgid(pid_t pid)
  {
  	if (!pid)
@@ -17556,7 +17489,7 @@
  	else {
  		int retval;
  		struct task_struct *p;
-@@ -1443,7 +1459,7 @@ asmlinkage long sys_getpgid(pid_t pid)
+@@ -1443,7 +1462,7 @@ asmlinkage long sys_getpgid(pid_t pid)
  		if (p) {
  			retval = security_task_getpgid(p);
  			if (!retval)
@@ -17565,7 +17498,7 @@
  		}
  		read_unlock(&tasklist_lock);
  		return retval;
-@@ -1795,7 +1811,7 @@ asmlinkage long sys_sethostname(char __u
+@@ -1795,7 +1814,7 @@ asmlinkage long sys_sethostname(char __u
  	int errno;
  	char tmp[__NEW_UTS_LEN];
  
@@ -17574,7 +17507,7 @@
  		return -EPERM;
  	if (len < 0 || len > __NEW_UTS_LEN)
  		return -EINVAL;
-@@ -1840,7 +1856,7 @@ asmlinkage long sys_setdomainname(char _
+@@ -1840,7 +1859,7 @@ asmlinkage long sys_setdomainname(char _
  	int errno;
  	char tmp[__NEW_UTS_LEN];
  
@@ -17583,7 +17516,7 @@
  		return -EPERM;
  	if (len < 0 || len > __NEW_UTS_LEN)
  		return -EINVAL;
-@@ -1907,7 +1923,7 @@ asmlinkage long sys_setrlimit(unsigned i
+@@ -1907,7 +1926,7 @@ asmlinkage long sys_setrlimit(unsigned i
  		return -EINVAL;
  	old_rlim = current->signal->rlim + resource;
  	if ((new_rlim.rlim_max > old_rlim->rlim_max) &&
@@ -17592,8 +17525,8 @@
  		return -EPERM;
  	if (resource == RLIMIT_NOFILE && new_rlim.rlim_max > NR_OPEN)
  		return -EPERM;
---- linux-2.6.20.1/kernel/sysctl.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/sysctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/sysctl.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/sysctl.c	2007-04-01 17:29:47 +0200
 @@ -87,6 +87,7 @@ static int ngroups_max = NGROUPS_MAX;
  #ifdef CONFIG_KMOD
  extern char modprobe_path[];
@@ -17618,8 +17551,8 @@
  #ifdef CONFIG_CHR_DEV_SG
  	{
  		.ctl_name	= KERN_SG_BIG_BUFF,
---- linux-2.6.20.1/kernel/time.c	2006-11-30 21:19:44 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/time.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/time.c	2006-11-30 21:19:44 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/time.c	2007-04-01 17:29:43 +0200
 @@ -61,7 +61,7 @@ asmlinkage long sys_time(time_t __user *
  	time_t i;
  	struct timeval tv;
@@ -17665,8 +17598,8 @@
  	tv->tv_sec = x.tv_sec;
  	tv->tv_nsec = x.tv_usec * NSEC_PER_USEC;
  }
---- linux-2.6.20.1/kernel/timer.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/timer.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/timer.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/timer.c	2007-04-01 17:30:01 +0200
 @@ -34,6 +34,10 @@
  #include <linux/cpu.h>
  #include <linux/syscalls.h>
@@ -17734,8 +17667,8 @@
  		val.uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0);
  
  		val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
---- linux-2.6.20.1/kernel/user.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/user.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/user.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/user.c	2007-04-01 17:30:04 +0200
 @@ -23,8 +23,8 @@
  #define UIDHASH_BITS (CONFIG_BASE_SMALL ? 3 : 8)
  #define UIDHASH_SZ		(1 << UIDHASH_BITS)
@@ -17824,8 +17757,8 @@
  	spin_unlock_irq(&uidhash_lock);
  
  	return 0;
---- linux-2.6.20.1/kernel/utsname.c	2006-11-30 21:19:44 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/utsname.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/utsname.c	2006-11-30 21:19:44 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/utsname.c	2007-04-01 17:30:02 +0200
 @@ -13,6 +13,7 @@
  #include <linux/uts.h>
  #include <linux/utsname.h>
@@ -17849,9 +17782,9 @@
 +	atomic_dec(&vs_global_uts_ns);
  	kfree(ns);
  }
---- linux-2.6.20.1/kernel/vserver/Kconfig	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/Kconfig	2007-02-24 21:13:02 +0100
-@@ -0,0 +1,271 @@
+--- linux-2.6.20.4/kernel/vserver/Kconfig	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/Kconfig	2007-04-01 17:29:39 +0200
+@@ -0,0 +1,284 @@
 +#
 +# Linux VServer configuration
 +#
@@ -17940,7 +17873,7 @@
 +
 +config	VSERVER_HARDCPU
 +	bool	"Enable Hard CPU Limits"
-+	default n
++	default y
 +	help
 +	  Activate the Hard CPU Limits
 +
@@ -17956,7 +17889,7 @@
 +config	VSERVER_IDLETIME
 +	bool	"Avoid idle CPUs by skipping Time"
 +	depends on VSERVER_HARDCPU
-+	default n
++	default y
 +	help
 +	  This option allows the scheduler to artificially
 +	  advance time (per cpu) when otherwise the idle
@@ -18013,14 +17946,6 @@
 +	  disk representation, which limits the use to a few
 +	  filesystems (currently ext2 and ext3)
 +
-+config	TAGGING_RUNTIME
-+	bool	"Runtime"
-+	depends on EXPERIMENTAL
-+	help
-+	  inodes are tagged when first accessed, this doesn't
-+	  require any persistant information, but might give
-+	  funny results for mixed access.
-+
 +endchoice
 +
 +config	TAG_NFSD
@@ -18048,12 +17973,33 @@
 +	  access to structures assigned to a specific context,
 +	  like ptys or loop devices.
 +
++config	VSERVER_CONTEXTS
++	int	"Maximum number of Contexts (1-65533)"	if EMBEDDED
++	range 1 65533
++	default "768"	if 64BIT
++	default "256"
++	help
++	  This setting will optimize certain data structures
++	  and memory allocations according to the expected
++	  maximum.
++
++	  note: this is not a strict upper limit.
++
++config	VSERVER_WARN
++	bool	"VServer Warnings"
++	default y
++	help
++	  This enables various runtime warnings, which will
++	  notify about potential manipulation attempts or
++	  resource shortage. It is generally considered to
++	  be a good idea to have that enabled.
++
 +config	VSERVER_DEBUG
 +	bool	"VServer Debugging Code"
 +	default n
 +	help
 +	  Set this to yes if you want to be able to activate
-+	  debugging output at runtime. It adds a probably small
++	  debugging output at runtime. It adds a very small
 +	  overhead to all vserver related functions and
 +	  increases the kernel size by about 20k.
 +
@@ -18123,8 +18069,8 @@
 +	depends on EXPERIMENTAL && !VSERVER_LEGACYNET
 +	default y
 +
---- linux-2.6.20.1/kernel/vserver/Makefile	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/Makefile	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/Makefile	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/Makefile	2007-04-01 17:29:39 +0200
 @@ -0,0 +1,17 @@
 +#
 +# Makefile for the Linux vserver routines.
@@ -18143,15 +18089,15 @@
 +vserver-$(CONFIG_VSERVER_HISTORY) += history.o
 +vserver-$(CONFIG_VSERVER_MONITOR) += monitor.o
 +
---- linux-2.6.20.1/kernel/vserver/cacct.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/cacct.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/cacct.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/cacct.c	2007-04-01 17:29:44 +0200
 @@ -0,0 +1,44 @@
 +/*
 + *  linux/kernel/vserver/cacct.c
 + *
 + *  Virtual Server: Context Accounting
 + *
-+ *  Copyright (C) 2006  Herbert Pötzl
++ *  Copyright (C) 2006-2007 Herbert Pötzl
 + *
 + *  V0.01  added accounting stats
 + *
@@ -18190,8 +18136,8 @@
 +	return 0;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/cacct_init.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/cacct_init.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/cacct_init.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/cacct_init.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,25 @@
 +
 +
@@ -18218,8 +18164,8 @@
 +	return;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/cacct_proc.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/cacct_proc.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/cacct_proc.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/cacct_proc.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,58 @@
 +#ifndef _VX_CACCT_PROC_H
 +#define _VX_CACCT_PROC_H
@@ -18279,15 +18225,15 @@
 +}
 +
 +#endif	/* _VX_CACCT_PROC_H */
---- linux-2.6.20.1/kernel/vserver/context.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/context.c	2007-02-08 12:43:13 +0100
-@@ -0,0 +1,1099 @@
+--- linux-2.6.20.4/kernel/vserver/context.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/context.c	2007-04-01 17:29:40 +0200
+@@ -0,0 +1,1096 @@
 +/*
 + *  linux/kernel/vserver/context.c
 + *
 + *  Virtual Server: Context Support
 + *
-+ *  Copyright (C) 2003-2006  Herbert Pötzl
++ *  Copyright (C) 2003-2007  Herbert Pötzl
 + *
 + *  V0.01  context helper
 + *  V0.02  vx_ctx_kill syscall command
@@ -18304,6 +18250,7 @@
 + *  V0.13  separate per cpu data
 + *  V0.14  changed vcmds to vxi arg
 + *  V0.15  added context stat
++ *  V0.16  have __create claim() the vxi
 + *
 + */
 +
@@ -18685,7 +18632,7 @@
 +/*	__create_vx_info()
 +
 +	* create the requested context
-+	* get() and hash it					*/
++	* get(), claim() and hash it				*/
 +
 +static struct vx_info * __create_vx_info(int id)
 +{
@@ -18738,6 +18685,7 @@
 +	/* new context */
 +	vxdprintk(VXD_CBIT(xid, 0),
 +		"create_vx_info(%d) = %p (new)", id, new);
++	claim_vx_info(new, NULL);
 +	__hash_vx_info(get_vx_info(new));
 +	vxi = new, new = NULL;
 +
@@ -18924,7 +18872,7 @@
 +}
 +
 +
-+/* 	for *space compatibility */
++/*	for *space compatibility */
 +
 +asmlinkage long sys_unshare(unsigned long);
 +
@@ -19059,7 +19007,7 @@
 +		"vx_set_persistent(%p[#%d])", vxi, vxi->vx_id);
 +
 +	get_vx_info(vxi);
-+	claim_vx_info(vxi, current);
++	claim_vx_info(vxi, NULL);
 +}
 +
 +void vx_clear_persistent(struct vx_info *vxi)
@@ -19067,7 +19015,7 @@
 +	vxdprintk(VXD_CBIT(xid, 6),
 +		"vx_clear_persistent(%p[#%d])", vxi, vxi->vx_id);
 +
-+	release_vx_info(vxi, current);
++	release_vx_info(vxi, NULL);
 +	put_vx_info(vxi);
 +}
 +
@@ -19185,27 +19133,22 @@
 +	/* initial flags */
 +	new_vxi->vx_flags = vc_data.flagword;
 +
-+	/* get a reference for persistent contexts */
-+	if ((vc_data.flagword & VXF_PERSISTENT))
-+		vx_set_persistent(new_vxi);
-+
 +	ret = -ENOEXEC;
 +	if (vs_state_change(new_vxi, VSC_STARTUP))
-+		goto out_err;
++		goto out;
 +
 +	ret = vx_migrate_task(current, new_vxi, (!data));
-+	if (!ret) {
-+		/* return context id on success */
-+		ret = new_vxi->vx_id;
++	if (ret)
 +		goto out;
-+	}
-+out_err:
-+	/* prepare for context disposal */
-+	new_vxi->vx_state |= VXS_SHUTDOWN;
-+	new_vxi->vx_flags &= ~VXF_PERSISTENT;
++
++	/* return context id on success */
++	ret = new_vxi->vx_id;
++
++	/* get a reference for persistent contexts */
 +	if ((vc_data.flagword & VXF_PERSISTENT))
-+		vx_clear_persistent(new_vxi);
++		vx_set_persistent(new_vxi);
 +out:
++	release_vx_info(new_vxi, NULL);
 +	put_vx_info(new_vxi);
 +	return ret;
 +}
@@ -19381,15 +19324,15 @@
 +
 +EXPORT_SYMBOL_GPL(free_vx_info);
 +
---- linux-2.6.20.1/kernel/vserver/cvirt.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/cvirt.c	2007-02-06 03:05:22 +0100
-@@ -0,0 +1,305 @@
+--- linux-2.6.20.4/kernel/vserver/cvirt.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/cvirt.c	2007-04-01 17:29:44 +0200
+@@ -0,0 +1,304 @@
 +/*
 + *  linux/kernel/vserver/cvirt.c
 + *
 + *  Virtual Server: Context Virtualization
 + *
-+ *  Copyright (C) 2004-2006  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  broken out from limit.c
 + *  V0.02  added utsname stuff
@@ -19404,7 +19347,6 @@
 +#include <linux/vs_cvirt.h>
 +#include <linux/vserver/switch.h>
 +#include <linux/vserver/cvirt_cmd.h>
-+//#include <linux/vserver/cacct_cmd.h>
 +
 +#include <asm/errno.h>
 +#include <asm/uaccess.h>
@@ -19689,9 +19631,9 @@
 +
 +#endif
 +
---- linux-2.6.20.1/kernel/vserver/cvirt_init.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/cvirt_init.h	2007-02-06 03:05:22 +0100
-@@ -0,0 +1,71 @@
+--- linux-2.6.20.4/kernel/vserver/cvirt_init.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/cvirt_init.h	2007-04-01 17:29:49 +0200
+@@ -0,0 +1,69 @@
 +
 +
 +extern uint64_t vx_idle_jiffies(void);
@@ -19738,7 +19680,6 @@
 +
 +static inline void vx_info_exit_cvirt(struct _vx_cvirt *cvirt)
 +{
-+#ifdef	CONFIG_VSERVER_DEBUG
 +	int value;
 +
 +	vxwprintk((value = atomic_read(&cvirt->nr_threads)),
@@ -19753,7 +19694,6 @@
 +	vxwprintk((value = atomic_read(&cvirt->nr_onhold)),
 +		"!!! cvirt: %p[nr_onhold] = %d on exit.",
 +		cvirt, value);
-+#endif
 +	return;
 +}
 +
@@ -19763,8 +19703,8 @@
 +	return;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/cvirt_proc.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/cvirt_proc.h	2007-02-06 05:55:13 +0100
+--- linux-2.6.20.4/kernel/vserver/cvirt_proc.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/cvirt_proc.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,138 @@
 +#ifndef _VX_CVIRT_PROC_H
 +#define _VX_CVIRT_PROC_H
@@ -19904,13 +19844,13 @@
 +}
 +
 +#endif	/* _VX_CVIRT_PROC_H */
---- linux-2.6.20.1/kernel/vserver/debug.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/debug.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/debug.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/debug.c	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,35 @@
 +/*
 + *  kernel/vserver/debug.c
 + *
-+ *  Copyright (C) 2005  Herbert Pötzl
++ *  Copyright (C) 2005-2007 Herbert Pötzl
 + *
 + *  V0.01  vx_info dump support
 + *
@@ -19942,15 +19882,15 @@
 +
 +EXPORT_SYMBOL_GPL(dump_vx_info);
 +
---- linux-2.6.20.1/kernel/vserver/dlimit.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/dlimit.c	2007-02-06 05:55:23 +0100
+--- linux-2.6.20.4/kernel/vserver/dlimit.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/dlimit.c	2007-04-01 17:29:50 +0200
 @@ -0,0 +1,527 @@
 +/*
 + *  linux/kernel/vserver/dlimit.c
 + *
 + *  Virtual Server: Context Disk Limits
 + *
-+ *  Copyright (C) 2004-2005  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  initial version
 + *  V0.02  compat32 splitup
@@ -20472,15 +20412,15 @@
 +EXPORT_SYMBOL_GPL(locate_dl_info);
 +EXPORT_SYMBOL_GPL(rcu_free_dl_info);
 +
---- linux-2.6.20.1/kernel/vserver/helper.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/helper.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/helper.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/helper.c	2007-04-01 17:29:47 +0200
 @@ -0,0 +1,208 @@
 +/*
 + *  linux/kernel/vserver/helper.c
 + *
 + *  Virtual Context Support
 + *
-+ *  Copyright (C) 2004-2005  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  basic helper
 + *
@@ -20683,15 +20623,15 @@
 +	return do_vshelper(vshelper_path, argv, envp, 1);
 +}
 +
---- linux-2.6.20.1/kernel/vserver/history.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/history.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/history.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/history.c	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,264 @@
 +/*
 + *  kernel/vserver/history.c
 + *
 + *  Virtual Context History Backtrace
 + *
-+ *  Copyright (C) 2004-2005  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  basic structure
 + *  V0.02  hash/unhash and trace
@@ -20950,15 +20890,15 @@
 +
 +#endif	/* CONFIG_COMPAT */
 +
---- linux-2.6.20.1/kernel/vserver/init.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/init.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/init.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/init.c	2007-04-01 17:29:39 +0200
 @@ -0,0 +1,47 @@
 +/*
 + *  linux/kernel/init.c
 + *
 + *  Virtual Server Init
 + *
-+ *  Copyright (C) 2004-2005  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  basic structure
 + *
@@ -21000,15 +20940,15 @@
 +module_init(init_vserver);
 +module_exit(exit_vserver);
 +
---- linux-2.6.20.1/kernel/vserver/inode.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/inode.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/inode.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/inode.c	2007-04-01 17:29:46 +0200
 @@ -0,0 +1,369 @@
 +/*
 + *  linux/kernel/vserver/inode.c
 + *
 + *  Virtual Server: File System Support
 + *
-+ *  Copyright (C) 2004-2005  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  separated from vcontext V0.05
 + *
@@ -21372,8 +21312,8 @@
 +
 +#endif	/* CONFIG_PROPAGATE */
 +
---- linux-2.6.20.1/kernel/vserver/legacy.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/legacy.c	2007-02-15 00:06:46 +0100
+--- linux-2.6.20.4/kernel/vserver/legacy.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/legacy.c	2007-04-01 17:30:05 +0200
 @@ -0,0 +1,114 @@
 +/*
 + *  linux/kernel/vserver/legacy.c
@@ -21381,7 +21321,7 @@
 + *  Virtual Server: Legacy Funtions
 + *
 + *  Copyright (C) 2001-2003  Jacques Gelinas
-+ *  Copyright (C) 2003-2006  Herbert Pötzl
++ *  Copyright (C) 2003-2007  Herbert Pötzl
 + *
 + *  V0.01  broken out from vcontext.c V0.05
 + *  V0.02  updated to spaces *sigh*
@@ -21489,9 +21429,9 @@
 +	return ret;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/legacynet.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/legacynet.c	2007-02-06 05:54:33 +0100
-@@ -0,0 +1,84 @@
+--- linux-2.6.20.4/kernel/vserver/legacynet.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/legacynet.c	2007-04-01 17:30:05 +0200
+@@ -0,0 +1,85 @@
 +
 +/*
 + *  linux/kernel/vserver/legacynet.c
@@ -21499,7 +21439,7 @@
 + *  Virtual Server: Legacy Network Funtions
 + *
 + *  Copyright (C) 2001-2003  Jacques Gelinas
-+ *  Copyright (C) 2003-2005  Herbert Pötzl
++ *  Copyright (C) 2003-2007  Herbert Pötzl
 + *
 + *  V0.01  broken out from legacy.c
 + *
@@ -21571,20 +21511,21 @@
 +		printk("!!! switching nx_info %p->%p\n", nxi, new_nxi);
 +
 +	nx_migrate_task(current, new_nxi);
++	release_nx_info(new_nxi, NULL);
 +	put_nx_info(new_nxi);
 +	return 0;
 +}
 +
 +
---- linux-2.6.20.1/kernel/vserver/limit.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/limit.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/limit.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/limit.c	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,319 @@
 +/*
 + *  linux/kernel/vserver/limit.c
 + *
 + *  Virtual Server: Context Limits
 + *
-+ *  Copyright (C) 2004-2006  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  broken out from vcontext V0.05
 + *  V0.02  changed vcmds to vxi arg
@@ -21898,8 +21839,8 @@
 +	return points;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/limit_init.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/limit_init.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/limit_init.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/limit_init.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,33 @@
 +
 +
@@ -21919,7 +21860,7 @@
 +
 +static inline void vx_info_exit_limit(struct _vx_limit *limit)
 +{
-+#ifdef	CONFIG_VSERVER_DEBUG
++#ifdef	CONFIG_VSERVER_WARN
 +	rlim_t value;
 +	int lim;
 +
@@ -21934,8 +21875,8 @@
 +#endif
 +}
 +
---- linux-2.6.20.1/kernel/vserver/limit_proc.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/limit_proc.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/limit_proc.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/limit_proc.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,58 @@
 +#ifndef _VX_LIMIT_PROC_H
 +#define _VX_LIMIT_PROC_H
@@ -21995,15 +21936,15 @@
 +#endif	/* _VX_LIMIT_PROC_H */
 +
 +
---- linux-2.6.20.1/kernel/vserver/monitor.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/monitor.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/monitor.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/monitor.c	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,142 @@
 +/*
 + *  kernel/vserver/monitor.c
 + *
 + *  Virtual Context Scheduler Monitor
 + *
-+ *  Copyright (C) 2006 Herbert Pötzl
++ *  Copyright (C) 2006-2007 Herbert Pötzl
 + *
 + *  V0.01  basic design
 + *
@@ -22140,15 +22081,15 @@
 +
 +#endif	/* CONFIG_COMPAT */
 +
---- linux-2.6.20.1/kernel/vserver/network.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/network.c	2007-02-15 00:05:40 +0100
-@@ -0,0 +1,770 @@
+--- linux-2.6.20.4/kernel/vserver/network.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/network.c	2007-04-01 17:29:41 +0200
+@@ -0,0 +1,772 @@
 +/*
 + *  linux/kernel/vserver/network.c
 + *
 + *  Virtual Server: Network Support
 + *
-+ *  Copyright (C) 2003-2006  Herbert Pötzl
++ *  Copyright (C) 2003-2007  Herbert Pötzl
 + *
 + *  V0.01  broken out from vcontext V0.05
 + *  V0.02  cleaned up implementation
@@ -22156,6 +22097,7 @@
 + *  V0.04  switch to RCU based hash
 + *  V0.05  and back to locking again
 + *  V0.06  changed vcmds to nxi arg
++ *  V0.07  have __create claim() the nxi
 + *
 + */
 +
@@ -22362,7 +22304,7 @@
 +/*	__create_nx_info()
 +
 +	* create the requested context
-+	* get() and hash it					*/
++	* get(), claim() and hash it				*/
 +
 +static struct nx_info * __create_nx_info(int id)
 +{
@@ -22413,6 +22355,7 @@
 +	/* new context */
 +	vxdprintk(VXD_CBIT(nid, 0),
 +		"create_nx_info(%d) = %p (new)", id, new);
++	claim_nx_info(new, NULL);
 +	__hash_nx_info(get_nx_info(new));
 +	nxi = new, new = NULL;
 +
@@ -22601,6 +22544,8 @@
 +	if (!nxi)
 +		return 1;
 +
++	if (!dev)
++		goto out;
 +	in_dev = in_dev_get(dev);
 +	if (!in_dev)
 +		goto out;
@@ -22673,8 +22618,11 @@
 +
 +void nx_set_persistent(struct nx_info *nxi)
 +{
++	vxdprintk(VXD_CBIT(nid, 6),
++		"nx_set_persistent(%p[#%d])", nxi, nxi->nx_id);
++
 +	get_nx_info(nxi);
-+	claim_nx_info(nxi, current);
++	claim_nx_info(nxi, NULL);
 +}
 +
 +void nx_clear_persistent(struct nx_info *nxi)
@@ -22682,7 +22630,7 @@
 +	vxdprintk(VXD_CBIT(nid, 6),
 +		"nx_clear_persistent(%p[#%d])", nxi, nxi->nx_id);
 +
-+	release_nx_info(nxi, current);
++	release_nx_info(nxi, NULL);
 +	put_nx_info(nxi);
 +}
 +
@@ -22757,27 +22705,22 @@
 +	/* initial flags */
 +	new_nxi->nx_flags = vc_data.flagword;
 +
-+	/* get a reference for persistent contexts */
-+	if ((vc_data.flagword & NXF_PERSISTENT))
-+		nx_set_persistent(new_nxi);
-+
 +	ret = -ENOEXEC;
 +	if (vs_net_change(new_nxi, VSC_NETUP))
-+		goto out_err;
++		goto out;
 +
 +	ret = nx_migrate_task(current, new_nxi);
-+	if (!ret) {
-+		/* return context id on success */
-+		ret = new_nxi->nx_id;
++	if (ret)
 +		goto out;
-+	}
-+out_err:
-+	/* prepare for context disposal */
-+	new_nxi->nx_state |= NXS_SHUTDOWN;
-+	new_nxi->nx_flags &= NXF_PERSISTENT;
++
++	/* return context id on success */
++	ret = new_nxi->nx_id;
++
++	/* get a reference for persistent contexts */
 +	if ((vc_data.flagword & NXF_PERSISTENT))
-+		nx_clear_persistent(new_nxi);
++		nx_set_persistent(new_nxi);
 +out:
++	release_nx_info(new_nxi, NULL);
 +	put_nx_info(new_nxi);
 +	return ret;
 +}
@@ -22913,15 +22856,15 @@
 +EXPORT_SYMBOL_GPL(free_nx_info);
 +EXPORT_SYMBOL_GPL(unhash_nx_info);
 +
---- linux-2.6.20.1/kernel/vserver/proc.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/proc.c	2007-02-24 21:13:02 +0100
-@@ -0,0 +1,1041 @@
+--- linux-2.6.20.4/kernel/vserver/proc.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/proc.c	2007-04-01 17:29:40 +0200
+@@ -0,0 +1,1035 @@
 +/*
 + *  linux/kernel/vserver/proc.c
 + *
 + *  Virtual Context Support
 + *
-+ *  Copyright (C) 2003-2006  Herbert Pötzl
++ *  Copyright (C) 2003-2007  Herbert Pötzl
 + *
 + *  V0.01  basic structure
 + *  V0.02  adaptation vs1.3.0
@@ -22958,10 +22901,6 @@
 +static struct proc_dir_entry *proc_virtnet;
 +
 +
-+
-+// #define PROC_VID_MASK	0x60
-+
-+
 +/* first the actual feeds */
 +
 +
@@ -23026,14 +22965,12 @@
 +		"BCaps:\t%016llx\n"
 +		"CCaps:\t%016llx\n"
 +		"Spaces:\t%08lx\n"
-+//		"Ticks:\t%d\n"
 +		,atomic_read(&vxi->vx_usecnt)
 +		,atomic_read(&vxi->vx_tasks)
 +		,(unsigned long long)vxi->vx_flags
 +		,(unsigned long long)vxi->vx_bcaps
 +		,(unsigned long long)vxi->vx_ccaps
 +		,vxi->vx_nsmask
-+//		,atomic_read(&vxi->limit.ticks)
 +		);
 +	return length;
 +}
@@ -23868,7 +23805,7 @@
 +};
 +
 +static struct inode_operations proc_virtnet_dir_inode_operations = {
-+	.getattr = 	proc_virtnet_getattr,
++	.getattr =	proc_virtnet_getattr,
 +	.lookup =	proc_virtnet_lookup,
 +};
 +
@@ -23957,15 +23894,15 @@
 +	return buffer - orig;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/sched.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/sched.c	2007-02-24 21:13:02 +0100
+--- linux-2.6.20.4/kernel/vserver/sched.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/sched.c	2007-04-01 17:29:45 +0200
 @@ -0,0 +1,451 @@
 +/*
 + *  linux/kernel/vserver/sched.c
 + *
 + *  Virtual Server: Scheduler Support
 + *
-+ *  Copyright (C) 2004-2006  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  adapted Sam Vilains version to 2.6.3
 + *  V0.02  removed legacy interface
@@ -24411,8 +24348,8 @@
 +	return 0;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/sched_init.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/sched_init.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/sched_init.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/sched_init.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,50 @@
 +
 +static inline void vx_info_init_sched(struct _vx_sched *sched)
@@ -24464,8 +24401,8 @@
 +{
 +	return;
 +}
---- linux-2.6.20.1/kernel/vserver/sched_proc.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/sched_proc.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/sched_proc.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/sched_proc.h	2007-04-01 17:29:49 +0200
 @@ -0,0 +1,62 @@
 +#ifndef _VX_SCHED_PROC_H
 +#define _VX_SCHED_PROC_H
@@ -24529,8 +24466,8 @@
 +}
 +
 +#endif	/* _VX_SCHED_PROC_H */
---- linux-2.6.20.1/kernel/vserver/signal.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/signal.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/signal.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/signal.c	2007-04-01 17:29:45 +0200
 @@ -0,0 +1,134 @@
 +/*
 + *  linux/kernel/vserver/signal.c
@@ -24666,15 +24603,15 @@
 +	return ret;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/space.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/space.c	2007-02-08 07:31:50 +0100
+--- linux-2.6.20.4/kernel/vserver/space.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/space.c	2007-04-01 17:30:03 +0200
 @@ -0,0 +1,279 @@
 +/*
 + *  linux/kernel/vserver/space.c
 + *
 + *  Virtual Server: Context Space Support
 + *
-+ *  Copyright (C) 2003-2006  Herbert Pötzl
++ *  Copyright (C) 2003-2007  Herbert Pötzl
 + *
 + *  V0.01  broken out from context.c 0.07
 + *  V0.02  added task locking for namespace
@@ -24948,15 +24885,15 @@
 +	return 0;
 +}
 +
---- linux-2.6.20.1/kernel/vserver/switch.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/switch.c	2007-02-08 07:31:50 +0100
+--- linux-2.6.20.4/kernel/vserver/switch.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/switch.c	2007-04-01 17:29:41 +0200
 @@ -0,0 +1,527 @@
 +/*
 + *  linux/kernel/vserver/switch.c
 + *
 + *  Virtual Server: Syscall Switch
 + *
-+ *  Copyright (C) 2003-2006  Herbert Pötzl
++ *  Copyright (C) 2003-2007  Herbert Pötzl
 + *
 + *  V0.01  syscall switch
 + *  V0.02  added signal to context
@@ -25478,15 +25415,15 @@
 +}
 +
 +#endif	/* CONFIG_COMPAT */
---- linux-2.6.20.1/kernel/vserver/sysctl.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/sysctl.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/sysctl.c	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/sysctl.c	2007-04-01 17:29:39 +0200
 @@ -0,0 +1,242 @@
 +/*
 + *  kernel/vserver/sysctl.c
 + *
 + *  Virtual Context Support
 + *
-+ *  Copyright (C) 2004-2005  Herbert Pötzl
++ *  Copyright (C) 2004-2007  Herbert Pötzl
 + *
 + *  V0.01  basic structure
 + *
@@ -25723,8 +25660,8 @@
 +EXPORT_SYMBOL_GPL(vx_debug_cvirt);
 +EXPORT_SYMBOL_GPL(vx_debug_misc);
 +
---- linux-2.6.20.1/kernel/vserver/vci_config.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/kernel/vserver/vci_config.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/kernel/vserver/vci_config.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/kernel/vserver/vci_config.h	2007-04-01 17:29:39 +0200
 @@ -0,0 +1,92 @@
 +
 +/*  interface version */
@@ -25818,8 +25755,8 @@
 +	0;
 +}
 +
---- linux-2.6.20.1/mm/filemap.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/filemap.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/filemap.c	2007-03-25 00:56:55 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/filemap.c	2007-04-01 17:30:00 +0200
 @@ -1234,6 +1234,31 @@ int file_send_actor(read_descriptor_t * 
  	return written;
  }
@@ -26085,8 +26022,8 @@
  ssize_t generic_file_aio_write_nolock(struct kiocb *iocb,
  		const struct iovec *iov, unsigned long nr_segs, loff_t pos)
  {
---- linux-2.6.20.1/mm/filemap_xip.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/filemap_xip.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/filemap_xip.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/filemap_xip.c	2007-04-01 17:29:38 +0200
 @@ -13,6 +13,7 @@
  #include <linux/module.h>
  #include <linux/uio.h>
@@ -26095,8 +26032,8 @@
  #include <asm/tlbflush.h>
  #include "filemap.h"
  
---- linux-2.6.20.1/mm/fremap.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/fremap.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/fremap.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/fremap.c	2007-04-01 17:29:47 +0200
 @@ -15,6 +15,7 @@
  #include <linux/rmap.h>
  #include <linux/module.h>
@@ -26114,8 +26051,8 @@
  
  	if (pte_none(*pte) || !zap_pte(mm, vma, addr, pte))
  		inc_mm_counter(mm, file_rss);
---- linux-2.6.20.1/mm/hugetlb.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/hugetlb.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/hugetlb.c	2007-03-10 20:34:01 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/hugetlb.c	2007-04-01 17:29:38 +0200
 @@ -19,6 +19,7 @@
  #include <asm/pgtable.h>
  
@@ -26124,8 +26061,8 @@
  #include "internal.h"
  
  const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL;
---- linux-2.6.20.1/mm/memory.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/memory.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/memory.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/memory.c	2007-04-01 17:29:48 +0200
 @@ -498,6 +498,9 @@ static int copy_pte_range(struct mm_stru
  	int progress = 0;
  	int rss[2];
@@ -26202,8 +26139,8 @@
  }
  
  /*
---- linux-2.6.20.1/mm/mlock.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/mlock.c	2007-02-06 03:59:47 +0100
+--- linux-2.6.20.4/mm/mlock.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/mlock.c	2007-04-01 17:29:47 +0200
 @@ -10,6 +10,7 @@
  #include <linux/mm.h>
  #include <linux/mempolicy.h>
@@ -26260,8 +26197,8 @@
  	if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
  	    capable(CAP_IPC_LOCK))
  		ret = do_mlockall(flags);
---- linux-2.6.20.1/mm/mmap.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/mmap.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/mmap.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/mmap.c	2007-04-01 17:29:47 +0200
 @@ -1141,10 +1141,10 @@ munmap_back:
  		kmem_cache_free(vm_area_cachep, vma);
  	}
@@ -26360,8 +26297,8 @@
 +		return 0;
  	return 1;
  }
---- linux-2.6.20.1/mm/mremap.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/mremap.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/mremap.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/mremap.c	2007-04-01 17:29:47 +0200
 @@ -18,6 +18,7 @@
  #include <linux/highmem.h>
  #include <linux/security.h>
@@ -26411,8 +26348,8 @@
  				make_pages_present(addr + old_len,
  						   addr + new_len);
  			}
---- linux-2.6.20.1/mm/nommu.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/nommu.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/nommu.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/nommu.c	2007-04-01 17:29:47 +0200
 @@ -921,7 +921,7 @@ unsigned long do_mmap_pgoff(struct file 
  	realalloc += kobjsize(vma);
  	askedalloc += sizeof(*vma);
@@ -26440,8 +26377,8 @@
  
  		while ((tmp = mm->context.vmlist)) {
  			mm->context.vmlist = tmp->next;
---- linux-2.6.20.1/mm/oom_kill.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/oom_kill.c	2007-02-06 04:02:11 +0100
+--- linux-2.6.20.4/mm/oom_kill.c	2007-03-25 00:56:55 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/oom_kill.c	2007-04-01 17:29:47 +0200
 @@ -24,6 +24,7 @@
  #include <linux/cpuset.h>
  #include <linux/module.h>
@@ -26495,8 +26432,8 @@
  
  	/* Try to kill a child first */
  	list_for_each(tsk, &p->children) {
---- linux-2.6.20.1/mm/page_alloc.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/page_alloc.c	2007-02-06 04:02:34 +0100
+--- linux-2.6.20.4/mm/page_alloc.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/page_alloc.c	2007-04-01 17:29:44 +0200
 @@ -41,6 +41,8 @@
  #include <linux/pfn.h>
  #include <linux/backing-dev.h>
@@ -26526,8 +26463,8 @@
  }
  #endif
  
---- linux-2.6.20.1/mm/rmap.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/rmap.c	2007-02-06 04:02:52 +0100
+--- linux-2.6.20.4/mm/rmap.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/rmap.c	2007-04-01 17:29:38 +0200
 @@ -48,6 +48,7 @@
  #include <linux/rcupdate.h>
  #include <linux/module.h>
@@ -26536,8 +26473,8 @@
  
  #include <asm/tlbflush.h>
  
---- linux-2.6.20.1/mm/shmem.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/shmem.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/shmem.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/shmem.c	2007-04-01 17:30:04 +0200
 @@ -55,7 +55,6 @@
  #include <asm/pgtable.h>
  
@@ -26564,8 +26501,8 @@
  	sb->s_op = &shmem_ops;
  	sb->s_time_gran = 1;
  #ifdef CONFIG_TMPFS_POSIX_ACL
---- linux-2.6.20.1/mm/slab.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/slab.c	2007-02-06 04:04:40 +0100
+--- linux-2.6.20.4/mm/slab.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/slab.c	2007-04-01 17:29:48 +0200
 @@ -502,6 +502,8 @@ struct kmem_cache {
  #define STATS_INC_FREEMISS(x)	do { } while (0)
  #endif
@@ -26600,8 +26537,8 @@
  
  	if (cache_free_alien(cachep, objp))
  		return;
---- linux-2.6.20.1/mm/slab_vs.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/slab_vs.h	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/slab_vs.h	1970-01-01 01:00:00 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/slab_vs.h	2007-04-01 17:29:48 +0200
 @@ -0,0 +1,27 @@
 +
 +#include <linux/vserver/context.h>
@@ -26630,8 +26567,8 @@
 +	atomic_sub(cachep->buffer_size, &current->vx_info->cacct.slab[what]);
 +}
 +
---- linux-2.6.20.1/mm/swapfile.c	2007-02-06 03:01:56 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/mm/swapfile.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/mm/swapfile.c	2007-02-06 03:01:56 +0100
++++ linux-2.6.20.4-vs2.2.0/mm/swapfile.c	2007-04-01 17:29:44 +0200
 @@ -31,6 +31,8 @@
  #include <asm/pgtable.h>
  #include <asm/tlbflush.h>
@@ -26650,8 +26587,8 @@
  }
  
  /*
---- linux-2.6.20.1/net/core/dev.c	2007-02-06 03:01:57 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/core/dev.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/core/dev.c	2007-02-06 03:01:57 +0100
++++ linux-2.6.20.4-vs2.2.0/net/core/dev.c	2007-04-01 17:29:43 +0200
 @@ -116,6 +116,8 @@
  #include <linux/dmaengine.h>
  #include <linux/err.h>
@@ -26682,8 +26619,8 @@
  	if (dev->get_stats) {
  		struct net_device_stats *stats = dev->get_stats(dev);
  
---- linux-2.6.20.1/net/core/rtnetlink.c	2007-02-06 03:01:57 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/core/rtnetlink.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/core/rtnetlink.c	2007-02-06 03:01:57 +0100
++++ linux-2.6.20.4-vs2.2.0/net/core/rtnetlink.c	2007-04-01 17:29:43 +0200
 @@ -36,6 +36,7 @@
  #include <linux/security.h>
  #include <linux/mutex.h>
@@ -26702,8 +26639,8 @@
  		if (rtnl_fill_ifinfo(skb, dev, NULL, 0, RTM_NEWLINK,
  				     NETLINK_CB(cb->skb).pid,
  				     cb->nlh->nlmsg_seq, 0, NLM_F_MULTI) <= 0)
---- linux-2.6.20.1/net/core/sock.c	2007-02-06 03:01:57 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/core/sock.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/core/sock.c	2007-03-17 23:20:39 +0100
++++ linux-2.6.20.4-vs2.2.0/net/core/sock.c	2007-04-01 17:29:42 +0200
 @@ -125,6 +125,9 @@
  #include <linux/ipsec.h>
  
@@ -26769,8 +26706,8 @@
  	atomic_set(&sk->sk_refcnt, 1);
  }
  
---- linux-2.6.20.1/net/ipv4/af_inet.c	2007-02-06 03:01:57 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/af_inet.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/ipv4/af_inet.c	2007-02-06 03:01:57 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/af_inet.c	2007-04-01 17:29:49 +0200
 @@ -115,6 +115,7 @@
  #ifdef CONFIG_IP_MROUTE
  #include <linux/mroute.h>
@@ -26864,8 +26801,8 @@
  	if (chk_addr_ret == RTN_MULTICAST || chk_addr_ret == RTN_BROADCAST)
  		inet->saddr = 0;  /* Use device */
  
---- linux-2.6.20.1/net/ipv4/devinet.c	2007-02-06 03:01:57 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/devinet.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/ipv4/devinet.c	2007-03-25 00:56:55 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/devinet.c	2007-04-01 17:29:43 +0200
 @@ -58,6 +58,7 @@
  #include <linux/sysctl.h>
  #endif
@@ -26874,7 +26811,7 @@
  
  #include <net/arp.h>
  #include <net/ip.h>
-@@ -677,6 +678,9 @@ int devinet_ioctl(unsigned int cmd, void
+@@ -679,6 +680,9 @@ int devinet_ioctl(unsigned int cmd, void
  		*colon = ':';
  
  	if ((in_dev = __in_dev_get_rtnl(dev)) != NULL) {
@@ -26884,7 +26821,7 @@
  		if (tryaddrmatch) {
  			/* Matthias Andree */
  			/* compare label and address (4.4BSD style) */
-@@ -685,6 +689,8 @@ int devinet_ioctl(unsigned int cmd, void
+@@ -687,6 +691,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) {
@@ -26893,7 +26830,7 @@
  				if (!strcmp(ifr.ifr_name, ifa->ifa_label) &&
  				    sin_orig.sin_addr.s_addr ==
  							ifa->ifa_address) {
-@@ -697,9 +703,12 @@ int devinet_ioctl(unsigned int cmd, void
+@@ -699,9 +705,12 @@ int devinet_ioctl(unsigned int cmd, void
  		   comparing just the label */
  		if (!ifa) {
  			for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL;
@@ -26907,7 +26844,7 @@
  		}
  	}
  
-@@ -850,6 +859,9 @@ static int inet_gifconf(struct net_devic
+@@ -852,6 +861,9 @@ static int inet_gifconf(struct net_devic
  		goto out;
  
  	for (; ifa; ifa = ifa->ifa_next) {
@@ -26917,7 +26854,7 @@
  		if (!buf) {
  			done += sizeof(ifr);
  			continue;
-@@ -1176,6 +1188,7 @@ static int inet_dump_ifaddr(struct sk_bu
+@@ -1178,6 +1190,7 @@ static int inet_dump_ifaddr(struct sk_bu
  	struct net_device *dev;
  	struct in_device *in_dev;
  	struct in_ifaddr *ifa;
@@ -26925,7 +26862,7 @@
  	int s_ip_idx, s_idx = cb->args[0];
  
  	s_ip_idx = ip_idx = cb->args[1];
-@@ -1193,6 +1206,9 @@ static int inet_dump_ifaddr(struct sk_bu
+@@ -1195,6 +1208,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++) {
@@ -26935,8 +26872,8 @@
  			if (ip_idx < s_ip_idx)
  				continue;
  			if (inet_fill_ifaddr(skb, ifa, NETLINK_CB(cb->skb).pid,
---- linux-2.6.20.1/net/ipv4/fib_hash.c	2007-02-06 03:01:57 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/fib_hash.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/ipv4/fib_hash.c	2007-02-06 03:01:57 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/fib_hash.c	2007-04-01 17:29:43 +0200
 @@ -35,6 +35,7 @@
  #include <linux/skbuff.h>
  #include <linux/netlink.h>
@@ -26964,8 +26901,8 @@
  		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,
---- linux-2.6.20.1/net/ipv4/inet_connection_sock.c	2007-02-06 03:01:57 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/inet_connection_sock.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/ipv4/inet_connection_sock.c	2007-02-06 03:01:57 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/inet_connection_sock.c	2007-04-01 17:29:42 +0200
 @@ -39,7 +39,6 @@ int sysctl_local_port_range[2] = { 1024,
  int inet_csk_bind_conflict(const struct sock *sk,
  			   const struct inet_bind_bucket *tb)
@@ -26986,8 +26923,8 @@
  					break;
  			}
  		}
---- linux-2.6.20.1/net/ipv4/inet_diag.c	2006-11-30 21:19:45 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/inet_diag.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/ipv4/inet_diag.c	2006-11-30 21:19:45 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/inet_diag.c	2007-04-01 17:29:43 +0200
 @@ -693,6 +693,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);
@@ -27015,8 +26952,8 @@
  				if (num < s_num)
  					goto next_dying;
  				if (r->id.idiag_sport != tw->tw_sport &&
---- linux-2.6.20.1/net/ipv4/inet_hashtables.c	2007-02-06 03:01:57 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/inet_hashtables.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/ipv4/inet_hashtables.c	2007-02-06 03:01:57 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/inet_hashtables.c	2007-04-01 17:29:42 +0200
 @@ -140,11 +140,10 @@ static struct sock *inet_lookup_listener
  			const __be32 rcv_saddr = inet->rcv_saddr;
  			int score = sk->sk_family == PF_INET ? 1 : 0;
@@ -27041,17 +26978,9 @@
  		    (sk->sk_family == PF_INET || !ipv6_only_sock(sk)) &&
  		    !sk->sk_bound_dev_if)
  			goto sherry_cache;
---- linux-2.6.20.1/net/ipv4/raw.c	2007-02-06 03:01:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/raw.c	2007-02-06 03:05:22 +0100
-@@ -78,6 +78,7 @@
- #include <linux/seq_file.h>
- #include <linux/netfilter.h>
- #include <linux/netfilter_ipv4.h>
-+// #include <linux/vs_base.h>
- 
- struct hlist_head raw_v4_htable[RAWV4_HTABLE_SIZE];
- DEFINE_RWLOCK(raw_v4_lock);
-@@ -101,6 +102,27 @@ static void raw_v4_unhash(struct sock *s
+--- linux-2.6.20.4/net/ipv4/raw.c	2007-02-06 03:01:59 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/raw.c	2007-04-01 17:29:43 +0200
+@@ -101,6 +101,27 @@ static void raw_v4_unhash(struct sock *s
  	write_unlock_bh(&raw_v4_lock);
  }
  
@@ -27079,7 +27008,7 @@
  struct sock *__raw_v4_lookup(struct sock *sk, unsigned short num,
  			     __be32 raddr, __be32 laddr,
  			     int dif)
-@@ -112,7 +134,8 @@ struct sock *__raw_v4_lookup(struct sock
+@@ -112,7 +133,8 @@ struct sock *__raw_v4_lookup(struct sock
  
  		if (inet->num == num 					&&
  		    !(inet->daddr && inet->daddr != raddr) 		&&
@@ -27089,7 +27018,7 @@
  		    !(sk->sk_bound_dev_if && sk->sk_bound_dev_if != dif))
  			goto found; /* gotcha */
  	}
-@@ -312,6 +335,11 @@ static int raw_send_hdrinc(struct sock *
+@@ -312,6 +334,11 @@ static int raw_send_hdrinc(struct sock *
  		iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);
  	}
  
@@ -27101,7 +27030,7 @@
  	err = NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, skb, NULL, rt->u.dst.dev,
  		      dst_output);
  	if (err > 0)
-@@ -323,6 +351,7 @@ out:
+@@ -323,6 +350,7 @@ out:
  
  error_fault:
  	err = -EFAULT;
@@ -27109,7 +27038,7 @@
  	kfree_skb(skb);
  error:
  	IP_INC_STATS(IPSTATS_MIB_OUTDISCARDS);
-@@ -489,6 +518,12 @@ static int raw_sendmsg(struct kiocb *ioc
+@@ -489,6 +517,12 @@ static int raw_sendmsg(struct kiocb *ioc
  		}
  
  		security_sk_classify_flow(sk, &fl);
@@ -27122,7 +27051,7 @@
  		err = ip_route_output_flow(&rt, &fl, sk, !(msg->msg_flags&MSG_DONTWAIT));
  	}
  	if (err)
-@@ -793,7 +828,8 @@ static struct sock *raw_get_first(struct
+@@ -793,7 +827,8 @@ static struct sock *raw_get_first(struct
  		struct hlist_node *node;
  
  		sk_for_each(sk, node, &raw_v4_htable[state->bucket])
@@ -27132,7 +27061,7 @@
  				goto found;
  	}
  	sk = NULL;
-@@ -809,7 +845,8 @@ static struct sock *raw_get_next(struct 
+@@ -809,7 +844,8 @@ static struct sock *raw_get_next(struct 
  		sk = sk_next(sk);
  try_again:
  		;
@@ -27142,8 +27071,8 @@
  
  	if (!sk && ++state->bucket < RAWV4_HTABLE_SIZE) {
  		sk = sk_head(&raw_v4_htable[state->bucket]);
---- linux-2.6.20.1/net/ipv4/tcp.c	2007-02-06 03:01:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/tcp.c	2007-02-06 04:05:16 +0100
+--- linux-2.6.20.4/net/ipv4/tcp.c	2007-03-10 20:34:01 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/tcp.c	2007-04-01 17:29:38 +0200
 @@ -259,6 +259,7 @@
  #include <linux/cache.h>
  #include <linux/err.h>
@@ -27152,17 +27081,9 @@
  
  #include <net/icmp.h>
  #include <net/tcp.h>
---- linux-2.6.20.1/net/ipv4/tcp_ipv4.c	2007-02-06 03:01:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/tcp_ipv4.c	2007-02-06 03:05:22 +0100
-@@ -77,6 +77,7 @@
- #include <linux/stddef.h>
- #include <linux/proc_fs.h>
- #include <linux/seq_file.h>
-+// #include <linux/vs_base.h>
- 
- #include <linux/crypto.h>
- #include <linux/scatterlist.h>
-@@ -1968,6 +1969,12 @@ static void *listening_get_next(struct s
+--- linux-2.6.20.4/net/ipv4/tcp_ipv4.c	2007-02-06 03:01:59 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/tcp_ipv4.c	2007-04-01 17:29:43 +0200
+@@ -1968,6 +1968,12 @@ static void *listening_get_next(struct s
  		req = req->dl_next;
  		while (1) {
  			while (req) {
@@ -27175,7 +27096,7 @@
  				if (req->rsk_ops->family == st->family) {
  					cur = req;
  					goto out;
-@@ -1992,6 +1999,10 @@ get_req:
+@@ -1992,6 +1998,10 @@ get_req:
  	}
  get_sk:
  	sk_for_each_from(sk, node) {
@@ -27186,7 +27107,7 @@
  		if (sk->sk_family == st->family) {
  			cur = sk;
  			goto out;
-@@ -2043,18 +2054,26 @@ static void *established_get_first(struc
+@@ -2043,18 +2053,26 @@ static void *established_get_first(struc
  
  		read_lock(&tcp_hashinfo.ehash[st->bucket].lock);
  		sk_for_each(sk, node, &tcp_hashinfo.ehash[st->bucket].chain) {
@@ -27217,7 +27138,7 @@
  			rc = tw;
  			goto out;
  		}
-@@ -2078,7 +2097,8 @@ static void *established_get_next(struct
+@@ -2078,7 +2096,8 @@ static void *established_get_next(struct
  		tw = cur;
  		tw = tw_next(tw);
  get_tw:
@@ -27227,7 +27148,7 @@
  			tw = tw_next(tw);
  		}
  		if (tw) {
-@@ -2102,6 +2122,11 @@ get_tw:
+@@ -2102,6 +2121,11 @@ get_tw:
  		sk = sk_next(sk);
  
  	sk_for_each_from(sk, node) {
@@ -27239,8 +27160,8 @@
  		if (sk->sk_family == st->family)
  			goto found;
  	}
---- linux-2.6.20.1/net/ipv4/tcp_minisocks.c	2007-02-06 03:01:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/tcp_minisocks.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/ipv4/tcp_minisocks.c	2007-03-10 20:34:01 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/tcp_minisocks.c	2007-04-01 17:29:42 +0200
 @@ -28,6 +28,10 @@
  #include <net/inet_common.h>
  #include <net/xfrm.h>
@@ -27264,8 +27185,8 @@
  #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
  		if (tw->tw_family == PF_INET6) {
  			struct ipv6_pinfo *np = inet6_sk(sk);
---- linux-2.6.20.1/net/ipv4/udp.c	2007-02-06 03:01:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv4/udp.c	2007-02-15 00:06:16 +0100
+--- linux-2.6.20.4/net/ipv4/udp.c	2007-03-17 23:20:39 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv4/udp.c	2007-04-01 17:29:43 +0200
 @@ -219,11 +219,8 @@ __inline__ int udp_get_port(struct sock 
  
  inline int ipv4_rcv_saddr_equal(const struct sock *sk1, const struct sock *sk2)
@@ -27322,7 +27243,7 @@
  		err = ip_route_output_flow(&rt, &fl, sk, !(msg->msg_flags&MSG_DONTWAIT));
  		if (err)
  			goto out;
-@@ -1540,7 +1556,8 @@ static struct sock *udp_get_first(struct
+@@ -1541,7 +1557,8 @@ static struct sock *udp_get_first(struct
  	for (state->bucket = 0; state->bucket < UDP_HTABLE_SIZE; ++state->bucket) {
  		struct hlist_node *node;
  		sk_for_each(sk, node, state->hashtable + state->bucket) {
@@ -27332,7 +27253,7 @@
  				goto found;
  		}
  	}
-@@ -1557,7 +1574,8 @@ static struct sock *udp_get_next(struct 
+@@ -1558,7 +1575,8 @@ static struct sock *udp_get_next(struct 
  		sk = sk_next(sk);
  try_again:
  		;
@@ -27342,9 +27263,9 @@
  
  	if (!sk && ++state->bucket < UDP_HTABLE_SIZE) {
  		sk = sk_head(state->hashtable + state->bucket);
---- linux-2.6.20.1/net/ipv6/addrconf.c	2007-02-06 03:01:59 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/ipv6/addrconf.c	2007-02-06 03:05:22 +0100
-@@ -2736,7 +2736,10 @@ static void if6_seq_stop(struct seq_file
+--- linux-2.6.20.4/net/ipv6/addrconf.c	2007-03-10 20:34:01 +0100
++++ linux-2.6.20.4-vs2.2.0/net/ipv6/addrconf.c	2007-04-01 17:30:02 +0200
+@@ -2738,7 +2738,10 @@ static void if6_seq_stop(struct seq_file
  static int if6_seq_show(struct seq_file *seq, void *v)
  {
  	struct inet6_ifaddr *ifp = (struct inet6_ifaddr *)v;
@@ -27356,7 +27277,7 @@
  		   NIP6_SEQFMT " %02x %02x %02x %02x %8s\n",
  		   NIP6(ifp->addr),
  		   ifp->idev->dev->ifindex,
-@@ -3208,6 +3211,10 @@ static int inet6_dump_addr(struct sk_buf
+@@ -3210,6 +3213,10 @@ static int inet6_dump_addr(struct sk_buf
  	struct ifmcaddr6 *ifmca;
  	struct ifacaddr6 *ifaca;
  
@@ -27367,7 +27288,7 @@
  	s_idx = cb->args[0];
  	s_ip_idx = ip_idx = cb->args[1];
  	read_lock(&dev_base_lock);
-@@ -3479,6 +3486,10 @@ static int inet6_dump_ifinfo(struct sk_b
+@@ -3481,6 +3488,10 @@ static int inet6_dump_ifinfo(struct sk_b
  	struct net_device *dev;
  	struct inet6_dev *idev;
  
@@ -27378,8 +27299,8 @@
  	read_lock(&dev_base_lock);
  	for (dev=dev_base, idx=0; dev; dev = dev->next, idx++) {
  		if (idx < s_idx)
---- linux-2.6.20.1/net/netlink/af_netlink.c	2007-02-06 03:02:00 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/netlink/af_netlink.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/netlink/af_netlink.c	2007-02-06 03:02:00 +0100
++++ linux-2.6.20.4-vs2.2.0/net/netlink/af_netlink.c	2007-04-01 17:29:38 +0200
 @@ -56,6 +56,9 @@
  #include <linux/types.h>
  #include <linux/audit.h>
@@ -27390,8 +27311,8 @@
  
  #include <net/sock.h>
  #include <net/scm.h>
---- linux-2.6.20.1/net/socket.c	2007-02-06 03:02:01 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/socket.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/socket.c	2007-02-06 03:02:01 +0100
++++ linux-2.6.20.4-vs2.2.0/net/socket.c	2007-04-01 17:30:02 +0200
 @@ -92,6 +92,8 @@
  
  #include <net/sock.h>
@@ -27495,8 +27416,8 @@
  
  	err = sock1->ops->socketpair(sock1, sock2);
  	if (err < 0)
---- linux-2.6.20.1/net/sunrpc/auth.c	2006-11-30 21:19:46 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/sunrpc/auth.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/sunrpc/auth.c	2006-11-30 21:19:46 +0100
++++ linux-2.6.20.4-vs2.2.0/net/sunrpc/auth.c	2007-04-01 17:30:04 +0200
 @@ -13,6 +13,7 @@
  #include <linux/errno.h>
  #include <linux/sunrpc/clnt.h>
@@ -27521,8 +27442,8 @@
  		.group_info = current->group_info,
  	};
  	struct rpc_cred *ret;
---- linux-2.6.20.1/net/sunrpc/auth_unix.c	2006-11-30 21:19:46 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/sunrpc/auth_unix.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/sunrpc/auth_unix.c	2006-11-30 21:19:46 +0100
++++ linux-2.6.20.4-vs2.2.0/net/sunrpc/auth_unix.c	2007-04-01 17:30:04 +0200
 @@ -11,12 +11,14 @@
  #include <linux/module.h>
  #include <linux/sunrpc/clnt.h>
@@ -27588,8 +27509,8 @@
  	hold = p++;
  	for (i = 0; i < 16 && cred->uc_gids[i] != (gid_t) NOGROUP; i++)
  		*p++ = htonl((u32) cred->uc_gids[i]);
---- linux-2.6.20.1/net/sunrpc/clnt.c	2007-02-06 03:02:01 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/sunrpc/clnt.c	2007-02-15 00:05:56 +0100
+--- linux-2.6.20.4/net/sunrpc/clnt.c	2007-02-06 03:02:01 +0100
++++ linux-2.6.20.4-vs2.2.0/net/sunrpc/clnt.c	2007-04-01 17:30:04 +0200
 @@ -30,6 +30,7 @@
  #include <linux/smp_lock.h>
  #include <linux/utsname.h>
@@ -27609,8 +27530,8 @@
  	return clnt;
  }
  EXPORT_SYMBOL_GPL(rpc_create);
---- linux-2.6.20.1/net/unix/af_unix.c	2007-02-06 03:02:01 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/unix/af_unix.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/unix/af_unix.c	2007-02-06 03:02:01 +0100
++++ linux-2.6.20.4-vs2.2.0/net/unix/af_unix.c	2007-04-01 17:30:01 +0200
 @@ -116,6 +116,8 @@
  #include <linux/mount.h>
  #include <net/checksum.h>
@@ -27638,8 +27559,8 @@
  		if (err)
  			goto out_mknod_dput;
  		mutex_unlock(&nd.dentry->d_inode->i_mutex);
---- linux-2.6.20.1/net/x25/af_x25.c	2007-02-06 03:02:01 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/net/x25/af_x25.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/net/x25/af_x25.c	2007-02-06 03:02:01 +0100
++++ linux-2.6.20.4-vs2.2.0/net/x25/af_x25.c	2007-04-01 17:29:42 +0200
 @@ -499,7 +499,10 @@ static int x25_create(struct socket *soc
  
  	x25 = x25_sk(sk);
@@ -27652,8 +27573,18 @@
  
  	x25_init_timers(sk);
  
---- linux-2.6.20.1/security/commoncap.c	2006-11-30 21:19:47 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/security/commoncap.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/security/Kconfig	2006-11-30 21:19:47 +0100
++++ linux-2.6.20.4-vs2.2.0/security/Kconfig	2007-04-01 17:29:39 +0200
+@@ -6,6 +6,7 @@ menu "Security options"
+ 
+ config KEYS
+ 	bool "Enable access key retention support"
++	depends on !VSERVER_SECURITY
+ 	help
+ 	  This option provides support for retaining authentication tokens and
+ 	  access keys in the kernel.
+--- linux-2.6.20.4/security/commoncap.c	2006-11-30 21:19:47 +0100
++++ linux-2.6.20.4-vs2.2.0/security/commoncap.c	2007-04-01 17:29:49 +0200
 @@ -23,10 +23,11 @@
  #include <linux/ptrace.h>
  #include <linux/xattr.h>
@@ -27696,8 +27627,8 @@
  		return -EPERM;
  	return 0;
  }
---- linux-2.6.20.1/security/dummy.c	2007-02-06 03:02:01 +0100
-+++ linux-2.6.20.1-vs2.2.0-rc15/security/dummy.c	2007-02-06 03:05:22 +0100
+--- linux-2.6.20.4/security/dummy.c	2007-02-06 03:02:01 +0100
++++ linux-2.6.20.4-vs2.2.0/security/dummy.c	2007-04-01 17:29:49 +0200
 @@ -28,6 +28,7 @@
  #include <linux/hugetlb.h>
  #include <linux/ptrace.h>

Modified: dists/trunk/linux-2.6/debian/patches/series/1~experimental.1-extra
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/1~experimental.1-extra	(original)
+++ dists/trunk/linux-2.6/debian/patches/series/1~experimental.1-extra	Mon Apr  9 14:59:27 2007
@@ -1,4 +1,4 @@
-+ features/all/vserver/vs2.2.0-rc15.patch *_vserver *_xen-vserver
++ features/all/vserver/vs2.2.0.patch *_vserver *_xen-vserver
 + features/all/vserver/bindmount-dev.patch *_vserver *_xen-vserver
 + features/all/xen/vserver-clash.patch *_xen-vserver
 + features/all/xen/fedora-2.6.20-48670.patch *_xen *_xen-vserver



More information about the Kernel-svn-changes mailing list