]> git.pld-linux.org Git - packages/kernel.git/blame - linux-2.6-vs2.3.patch
- updated (based on patch-2.6.22.16-vs2.3.0.29.2.diff)
[packages/kernel.git] / linux-2.6-vs2.3.patch
CommitLineData
0dc865fe
AM
1diff -Nurp linux-2.6.22.15/arch/alpha/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/Kconfig
2--- linux-2.6.22.15/arch/alpha/Kconfig 2007-07-21 17:59:44.000000000 -0400
3+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/Kconfig 2007-12-09 06:44:17.000000000 -0500
993891e7 4@@ -662,6 +662,8 @@ config DUMMY_CONSOLE
5 depends on VGA_HOSE
6 default y
7
8+source "kernel/vserver/Kconfig"
9+
10 source "security/Kconfig"
11
12 source "crypto/Kconfig"
0dc865fe
AM
13diff -Nurp linux-2.6.22.15/arch/alpha/kernel/asm-offsets.c linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/asm-offsets.c
14--- linux-2.6.22.15/arch/alpha/kernel/asm-offsets.c 2006-06-17 21:49:35.000000000 -0400
15+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/asm-offsets.c 2007-12-09 06:44:17.000000000 -0500
993891e7 16@@ -36,6 +36,7 @@ void foo(void)
17 DEFINE(PT_PTRACED, PT_PTRACED);
18 DEFINE(CLONE_VM, CLONE_VM);
19 DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
20+ DEFINE(CLONE_KTHREAD, CLONE_KTHREAD);
21 DEFINE(SIGCHLD, SIGCHLD);
22 BLANK();
23
0dc865fe
AM
24diff -Nurp linux-2.6.22.15/arch/alpha/kernel/entry.S linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/entry.S
25--- linux-2.6.22.15/arch/alpha/kernel/entry.S 2007-07-21 17:59:44.000000000 -0400
26+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/entry.S 2007-12-09 06:44:17.000000000 -0500
993891e7 27@@ -643,7 +643,7 @@ kernel_thread:
28 stq $2, 152($sp) /* HAE */
29
30 /* Shuffle FLAGS to the front; add CLONE_VM. */
31- ldi $1, CLONE_VM|CLONE_UNTRACED
32+ ldi $1, CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD;
33 or $18, $1, $16
34 bsr $26, sys_clone
35
36@@ -872,24 +872,15 @@ sys_getxgid:
37 .globl sys_getxpid
38 .ent sys_getxpid
39 sys_getxpid:
40+ lda $sp, -16($sp)
41+ stq $26, 0($sp)
42 .prologue 0
43- ldq $2, TI_TASK($8)
44
45- /* See linux/kernel/timer.c sys_getppid for discussion
46- about this loop. */
47- ldq $3, TASK_GROUP_LEADER($2)
48- ldq $4, TASK_REAL_PARENT($3)
49- ldl $0, TASK_TGID($2)
50-1: ldl $1, TASK_TGID($4)
51-#ifdef CONFIG_SMP
52- mov $4, $5
53- mb
54- ldq $3, TASK_GROUP_LEADER($2)
55- ldq $4, TASK_REAL_PARENT($3)
56- cmpeq $4, $5, $5
57- beq $5, 1b
58-#endif
59- stq $1, 80($sp)
60+ lda $16, 96($sp)
61+ jsr $26, do_getxpid
62+ ldq $26, 0($sp)
63+
64+ lda $sp, 16($sp)
65 ret
66 .end sys_getxpid
67
0dc865fe
AM
68diff -Nurp linux-2.6.22.15/arch/alpha/kernel/osf_sys.c linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/osf_sys.c
69--- linux-2.6.22.15/arch/alpha/kernel/osf_sys.c 2007-07-21 17:59:44.000000000 -0400
70+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/osf_sys.c 2007-12-09 06:44:17.000000000 -0500
993891e7 71@@ -883,7 +883,7 @@ osf_gettimeofday(struct timeval32 __user
72 {
73 if (tv) {
74 struct timeval ktv;
75- do_gettimeofday(&ktv);
76+ vx_gettimeofday(&ktv);
77 if (put_tv32(tv, &ktv))
78 return -EFAULT;
79 }
0dc865fe
AM
80diff -Nurp linux-2.6.22.15/arch/alpha/kernel/ptrace.c linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/ptrace.c
81--- linux-2.6.22.15/arch/alpha/kernel/ptrace.c 2006-06-17 21:49:35.000000000 -0400
82+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/ptrace.c 2007-12-09 06:44:17.000000000 -0500
993891e7 83@@ -15,6 +15,7 @@
84 #include <linux/slab.h>
85 #include <linux/security.h>
86 #include <linux/signal.h>
87+#include <linux/vs_base.h>
88
89 #include <asm/uaccess.h>
90 #include <asm/pgtable.h>
91@@ -283,6 +284,11 @@ do_sys_ptrace(long request, long pid, lo
92 goto out_notsk;
93 }
94
95+ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT)) {
96+ ret = -EPERM;
97+ goto out;
98+ }
99+
100 if (request == PTRACE_ATTACH) {
101 ret = ptrace_attach(child);
102 goto out;
0dc865fe
AM
103diff -Nurp linux-2.6.22.15/arch/alpha/kernel/semaphore.c linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/semaphore.c
104--- linux-2.6.22.15/arch/alpha/kernel/semaphore.c 2006-06-17 21:49:35.000000000 -0400
105+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/semaphore.c 2007-12-09 06:44:17.000000000 -0500
993891e7 106@@ -68,8 +68,8 @@ __down_failed(struct semaphore *sem)
107 DECLARE_WAITQUEUE(wait, tsk);
108
109 #ifdef CONFIG_DEBUG_SEMAPHORE
110- printk("%s(%d): down failed(%p)\n",
111- tsk->comm, tsk->pid, sem);
112+ printk("%s(%d:#%u): down failed(%p)\n",
113+ tsk->comm, tsk->pid, tsk->xid, sem);
114 #endif
115
116 tsk->state = TASK_UNINTERRUPTIBLE;
117@@ -97,8 +97,8 @@ __down_failed(struct semaphore *sem)
118 wake_up(&sem->wait);
119
120 #ifdef CONFIG_DEBUG_SEMAPHORE
121- printk("%s(%d): down acquired(%p)\n",
122- tsk->comm, tsk->pid, sem);
123+ printk("%s(%d:#%u): down acquired(%p)\n",
124+ tsk->comm, tsk->pid, tsk->xid, sem);
125 #endif
126 }
127
128@@ -110,8 +110,8 @@ __down_failed_interruptible(struct semap
129 long ret = 0;
130
131 #ifdef CONFIG_DEBUG_SEMAPHORE
132- printk("%s(%d): down failed(%p)\n",
133- tsk->comm, tsk->pid, sem);
134+ printk("%s(%d:#%u): down failed(%p)\n",
135+ tsk->comm, tsk->pid, tsk->xid, sem);
136 #endif
137
138 tsk->state = TASK_INTERRUPTIBLE;
0dc865fe
AM
139diff -Nurp linux-2.6.22.15/arch/alpha/kernel/systbls.S linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/systbls.S
140--- linux-2.6.22.15/arch/alpha/kernel/systbls.S 2007-07-21 17:59:44.000000000 -0400
141+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/systbls.S 2007-12-09 06:44:17.000000000 -0500
993891e7 142@@ -446,7 +446,7 @@ sys_call_table:
143 .quad sys_stat64 /* 425 */
144 .quad sys_lstat64
145 .quad sys_fstat64
146- .quad sys_ni_syscall /* sys_vserver */
147+ .quad sys_vserver /* sys_vserver */
148 .quad sys_ni_syscall /* sys_mbind */
149 .quad sys_ni_syscall /* sys_get_mempolicy */
150 .quad sys_ni_syscall /* sys_set_mempolicy */
0dc865fe
AM
151diff -Nurp linux-2.6.22.15/arch/alpha/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/traps.c
152--- linux-2.6.22.15/arch/alpha/kernel/traps.c 2007-05-04 09:55:03.000000000 -0400
153+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/kernel/traps.c 2007-12-09 06:44:17.000000000 -0500
993891e7 154@@ -182,7 +182,8 @@ die_if_kernel(char * str, struct pt_regs
155 #ifdef CONFIG_SMP
156 printk("CPU %d ", hard_smp_processor_id());
157 #endif
158- printk("%s(%d): %s %ld\n", current->comm, current->pid, str, err);
159+ printk("%s(%d[#%u]): %s %ld\n", current->comm,
160+ current->pid, current->xid, str, err);
161 dik_show_regs(regs, r9_15);
162 dik_show_trace((unsigned long *)(regs+1));
163 dik_show_code((unsigned int *)regs->pc);
0dc865fe
AM
164diff -Nurp linux-2.6.22.15/arch/alpha/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/mm/fault.c
165--- linux-2.6.22.15/arch/alpha/mm/fault.c 2007-07-21 17:59:44.000000000 -0400
166+++ linux-2.6.22.15-vs2.3.0.29.1/arch/alpha/mm/fault.c 2007-12-09 06:44:17.000000000 -0500
993891e7 167@@ -197,8 +197,8 @@ do_page_fault(unsigned long address, uns
168 down_read(&mm->mmap_sem);
169 goto survive;
170 }
171- printk(KERN_ALERT "VM: killing process %s(%d)\n",
172- current->comm, current->pid);
173+ printk(KERN_ALERT "VM: killing process %s(%d:#%u)\n",
174+ current->comm, current->pid, current->xid);
175 if (!user_mode(regs))
176 goto no_context;
177 do_exit(SIGKILL);
0dc865fe
AM
178diff -Nurp linux-2.6.22.15/arch/arm/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/arm/Kconfig
179--- linux-2.6.22.15/arch/arm/Kconfig 2007-07-21 17:59:44.000000000 -0400
180+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm/Kconfig 2007-12-09 06:44:17.000000000 -0500
993891e7 181@@ -1042,6 +1042,8 @@ source "arch/arm/oprofile/Kconfig"
182
183 source "arch/arm/Kconfig.debug"
184
185+source "kernel/vserver/Kconfig"
186+
187 source "security/Kconfig"
188
189 source "crypto/Kconfig"
0dc865fe
AM
190diff -Nurp linux-2.6.22.15/arch/arm/kernel/calls.S linux-2.6.22.15-vs2.3.0.29.1/arch/arm/kernel/calls.S
191--- linux-2.6.22.15/arch/arm/kernel/calls.S 2007-07-21 17:59:44.000000000 -0400
192+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm/kernel/calls.S 2007-12-09 06:44:17.000000000 -0500
993891e7 193@@ -322,7 +322,7 @@
194 /* 310 */ CALL(sys_request_key)
195 CALL(sys_keyctl)
196 CALL(ABI(sys_semtimedop, sys_oabi_semtimedop))
197-/* vserver */ CALL(sys_ni_syscall)
198+ CALL(sys_vserver)
199 CALL(sys_ioprio_set)
200 /* 315 */ CALL(sys_ioprio_get)
201 CALL(sys_inotify_init)
0dc865fe
AM
202diff -Nurp linux-2.6.22.15/arch/arm/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/arm/kernel/process.c
203--- linux-2.6.22.15/arch/arm/kernel/process.c 2007-07-21 17:59:44.000000000 -0400
204+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm/kernel/process.c 2007-12-09 06:44:17.000000000 -0500
993891e7 205@@ -261,7 +261,8 @@ void __show_regs(struct pt_regs *regs)
206 void show_regs(struct pt_regs * regs)
207 {
208 printk("\n");
209- printk("Pid: %d, comm: %20s\n", current->pid, current->comm);
210+ printk("Pid: %d[#%u], comm: %20s\n",
211+ current->pid, current->xid, current->comm);
212 __show_regs(regs);
213 __backtrace();
214 }
215@@ -423,7 +424,8 @@ pid_t kernel_thread(int (*fn)(void *), v
216 regs.ARM_pc = (unsigned long)kernel_thread_helper;
217 regs.ARM_cpsr = SVC_MODE;
218
219- return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
220+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
221+ 0, &regs, 0, NULL, NULL);
222 }
223 EXPORT_SYMBOL(kernel_thread);
224
0dc865fe
AM
225diff -Nurp linux-2.6.22.15/arch/arm/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/arm/kernel/traps.c
226--- linux-2.6.22.15/arch/arm/kernel/traps.c 2007-07-21 17:59:44.000000000 -0400
227+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm/kernel/traps.c 2007-12-09 06:44:17.000000000 -0500
993891e7 228@@ -222,8 +222,8 @@ static void __die(const char *str, int e
229 str, err, ++die_counter);
230 print_modules();
231 __show_regs(regs);
232- printk("Process %s (pid: %d, stack limit = 0x%p)\n",
233- tsk->comm, tsk->pid, thread + 1);
234+ printk("Process %s (pid: %d:#%u, stack limit = 0x%p)\n",
235+ tsk->comm, tsk->pid, tsk->xid, thread + 1);
236
237 if (!user_mode(regs) || in_interrupt()) {
238 dump_mem("Stack: ", regs->ARM_sp,
0dc865fe
AM
239diff -Nurp linux-2.6.22.15/arch/arm/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/arm/mm/fault.c
240--- linux-2.6.22.15/arch/arm/mm/fault.c 2007-07-21 17:59:44.000000000 -0400
241+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm/mm/fault.c 2007-12-09 06:44:17.000000000 -0500
993891e7 242@@ -266,7 +266,8 @@ do_page_fault(unsigned long addr, unsign
243 * happened to us that made us unable to handle
244 * the page fault gracefully.
245 */
246- printk("VM: killing process %s\n", tsk->comm);
247+ printk("VM: killing process %s(%d:#%u)\n",
248+ tsk->comm, tsk->pid, tsk->xid);
249 do_exit(SIGKILL);
250 return 0;
251
0dc865fe
AM
252diff -Nurp linux-2.6.22.15/arch/arm26/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/arm26/Kconfig
253--- linux-2.6.22.15/arch/arm26/Kconfig 2007-07-21 17:59:44.000000000 -0400
254+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm26/Kconfig 2007-12-09 06:44:17.000000000 -0500
993891e7 255@@ -243,6 +243,8 @@ source "drivers/usb/Kconfig"
256
257 source "arch/arm26/Kconfig.debug"
258
259+source "kernel/vserver/Kconfig"
260+
261 source "security/Kconfig"
262
263 source "crypto/Kconfig"
0dc865fe
AM
264diff -Nurp linux-2.6.22.15/arch/arm26/kernel/calls.S linux-2.6.22.15-vs2.3.0.29.1/arch/arm26/kernel/calls.S
265--- linux-2.6.22.15/arch/arm26/kernel/calls.S 2006-06-17 21:49:35.000000000 -0400
266+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm26/kernel/calls.S 2007-12-09 06:44:17.000000000 -0500
993891e7 267@@ -257,6 +257,11 @@ __syscall_start:
268 .long sys_lremovexattr
269 .long sys_fremovexattr
270 .long sys_tkill
271+
272+ .rept 313 - (. - __syscall_start) / 4
273+ .long sys_ni_syscall
274+ .endr
275+ .long sys_vserver /* 313 */
276 __syscall_end:
277
278 .rept NR_syscalls - (__syscall_end - __syscall_start) / 4
0dc865fe
AM
279diff -Nurp linux-2.6.22.15/arch/arm26/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/arm26/kernel/process.c
280--- linux-2.6.22.15/arch/arm26/kernel/process.c 2007-05-04 09:55:07.000000000 -0400
281+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm26/kernel/process.c 2007-12-09 06:44:17.000000000 -0500
993891e7 282@@ -365,7 +365,8 @@ pid_t kernel_thread(int (*fn)(void *), v
283 regs.ARM_r3 = (unsigned long)do_exit;
284 regs.ARM_pc = (unsigned long)kernel_thread_helper | MODE_SVC26;
285
286- return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
287+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
288+ 0, &regs, 0, NULL, NULL);
289 }
290 EXPORT_SYMBOL(kernel_thread);
291
0dc865fe
AM
292diff -Nurp linux-2.6.22.15/arch/arm26/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/arm26/kernel/traps.c
293--- linux-2.6.22.15/arch/arm26/kernel/traps.c 2007-05-04 09:55:07.000000000 -0400
294+++ linux-2.6.22.15-vs2.3.0.29.1/arch/arm26/kernel/traps.c 2007-12-09 06:44:17.000000000 -0500
993891e7 295@@ -185,8 +185,9 @@ NORET_TYPE void die(const char *str, str
296 printk("Internal error: %s: %x\n", str, err);
297 printk("CPU: %d\n", smp_processor_id());
298 show_regs(regs);
299- printk("Process %s (pid: %d, stack limit = 0x%p)\n",
300- current->comm, current->pid, end_of_stack(tsk));
301+ printk("Process %s (pid: %d[#%u], stack limit = 0x%p)\n",
302+ current->comm, current->pid,
303+ current->xid, end_of_stack(tsk));
304
305 if (!user_mode(regs) || in_interrupt()) {
306 __dump_stack(tsk, (unsigned long)(regs + 1));
0dc865fe
AM
307diff -Nurp linux-2.6.22.15/arch/cris/arch-v10/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/cris/arch-v10/kernel/process.c
308--- linux-2.6.22.15/arch/cris/arch-v10/kernel/process.c 2007-05-04 09:55:07.000000000 -0400
309+++ linux-2.6.22.15-vs2.3.0.29.1/arch/cris/arch-v10/kernel/process.c 2007-12-09 06:44:17.000000000 -0500
993891e7 310@@ -103,7 +103,8 @@ int kernel_thread(int (*fn)(void *), voi
311 regs.dccr = 1 << I_DCCR_BITNR;
312
313 /* Ok, create the new process.. */
314- return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
315+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
316+ 0, &regs, 0, NULL, NULL);
317 }
318
319 /* setup the child's kernel stack with a pt_regs and switch_stack on it.
0dc865fe
AM
320diff -Nurp linux-2.6.22.15/arch/cris/arch-v32/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/cris/arch-v32/kernel/process.c
321--- linux-2.6.22.15/arch/cris/arch-v32/kernel/process.c 2007-05-04 09:55:07.000000000 -0400
322+++ linux-2.6.22.15-vs2.3.0.29.1/arch/cris/arch-v32/kernel/process.c 2007-12-09 06:44:17.000000000 -0500
993891e7 323@@ -120,7 +120,8 @@ kernel_thread(int (*fn)(void *), void *
324 regs.ccs = 1 << (I_CCS_BITNR + CCS_SHIFT);
325
326 /* Create the new process. */
327- return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
328+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
329+ 0, &regs, 0, NULL, NULL);
330 }
331
332 /*
0dc865fe
AM
333diff -Nurp linux-2.6.22.15/arch/cris/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/cris/Kconfig
334--- linux-2.6.22.15/arch/cris/Kconfig 2007-07-21 17:58:14.000000000 -0400
335+++ linux-2.6.22.15-vs2.3.0.29.1/arch/cris/Kconfig 2007-12-09 06:44:17.000000000 -0500
336@@ -200,6 +200,8 @@ source "drivers/usb/Kconfig"
337
338 source "arch/cris/Kconfig.debug"
339
340+source "kernel/vserver/Kconfig"
341+
342 source "security/Kconfig"
343
344 source "crypto/Kconfig"
345diff -Nurp linux-2.6.22.15/arch/frv/kernel/kernel_thread.S linux-2.6.22.15-vs2.3.0.29.1/arch/frv/kernel/kernel_thread.S
346--- linux-2.6.22.15/arch/frv/kernel/kernel_thread.S 2006-06-17 21:49:35.000000000 -0400
347+++ linux-2.6.22.15-vs2.3.0.29.1/arch/frv/kernel/kernel_thread.S 2007-12-09 06:44:17.000000000 -0500
993891e7 348@@ -13,6 +13,8 @@
349 #include <asm/unistd.h>
350
351 #define CLONE_VM 0x00000100 /* set if VM shared between processes */
352+#define CLONE_KTHREAD 0x10000000 /* kernel thread */
353+#define CLONE_KT (CLONE_VM | CLONE_KTHREAD) /* kernel thread flags */
354 #define KERN_ERR "<3>"
355
356 .section .rodata
357@@ -37,7 +39,7 @@ kernel_thread:
358
359 # start by forking the current process, but with shared VM
360 setlos.p #__NR_clone,gr7 ; syscall number
361- ori gr10,#CLONE_VM,gr8 ; first syscall arg [clone_flags]
362+ ori gr10,#CLONE_KT,gr8 ; first syscall arg [clone_flags]
363 sethi.p #0xe4e4,gr9 ; second syscall arg [newsp]
364 setlo #0xe4e4,gr9
365 setlos.p #0,gr10 ; third syscall arg [parent_tidptr]
0dc865fe
AM
366diff -Nurp linux-2.6.22.15/arch/h8300/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/h8300/Kconfig
367--- linux-2.6.22.15/arch/h8300/Kconfig 2007-07-21 17:59:44.000000000 -0400
368+++ linux-2.6.22.15-vs2.3.0.29.1/arch/h8300/Kconfig 2007-12-09 06:44:17.000000000 -0500
993891e7 369@@ -222,6 +222,8 @@ source "fs/Kconfig"
370
371 source "arch/h8300/Kconfig.debug"
372
373+source "kernel/vserver/Kconfig"
374+
375 source "security/Kconfig"
376
377 source "crypto/Kconfig"
0dc865fe
AM
378diff -Nurp linux-2.6.22.15/arch/h8300/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/h8300/kernel/process.c
379--- linux-2.6.22.15/arch/h8300/kernel/process.c 2007-05-04 09:55:07.000000000 -0400
380+++ linux-2.6.22.15-vs2.3.0.29.1/arch/h8300/kernel/process.c 2007-12-09 06:44:17.000000000 -0500
993891e7 381@@ -134,7 +134,7 @@ int kernel_thread(int (*fn)(void *), voi
382
383 fs = get_fs();
384 set_fs (KERNEL_DS);
385- clone_arg = flags | CLONE_VM;
386+ clone_arg = flags | CLONE_VM | CLONE_KTHREAD;
387 __asm__("mov.l sp,er3\n\t"
388 "sub.l er2,er2\n\t"
389 "mov.l %2,er1\n\t"
0dc865fe
AM
390diff -Nurp linux-2.6.22.15/arch/i386/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/i386/Kconfig
391--- linux-2.6.22.15/arch/i386/Kconfig 2007-07-21 17:59:44.000000000 -0400
392+++ linux-2.6.22.15-vs2.3.0.29.1/arch/i386/Kconfig 2007-12-09 06:44:17.000000000 -0500
993891e7 393@@ -1230,6 +1230,8 @@ endmenu
394
395 source "arch/i386/Kconfig.debug"
396
397+source "kernel/vserver/Kconfig"
398+
399 source "security/Kconfig"
400
401 source "crypto/Kconfig"
0dc865fe
AM
402diff -Nurp linux-2.6.22.15/arch/i386/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/i386/kernel/process.c
403--- linux-2.6.22.15/arch/i386/kernel/process.c 2007-07-21 17:59:45.000000000 -0400
404+++ linux-2.6.22.15-vs2.3.0.29.1/arch/i386/kernel/process.c 2007-12-09 06:44:17.000000000 -0500
993891e7 405@@ -302,8 +302,10 @@ void show_regs(struct pt_regs * regs)
406 unsigned long cr0 = 0L, cr2 = 0L, cr3 = 0L, cr4 = 0L;
407
408 printk("\n");
409- printk("Pid: %d, comm: %20s\n", current->pid, current->comm);
410- printk("EIP: %04x:[<%08lx>] CPU: %d\n",0xffff & regs->xcs,regs->eip, smp_processor_id());
411+ printk("Pid: %d[#%u], comm: %20s\n",
412+ current->pid, current->xid, current->comm);
413+ printk("EIP: %04x:[<%08lx>] CPU: %d\n",
414+ 0xffff & regs->xcs,regs->eip, smp_processor_id());
415 print_symbol("EIP is at %s\n", regs->eip);
416
417 if (user_mode_vm(regs))
418@@ -355,7 +357,8 @@ int kernel_thread(int (*fn)(void *), voi
419 regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2;
420
421 /* Ok, create the new process.. */
422- return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
423+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
424+ 0, &regs, 0, NULL, NULL);
425 }
426 EXPORT_SYMBOL(kernel_thread);
427
0dc865fe
AM
428diff -Nurp linux-2.6.22.15/arch/i386/kernel/syscall_table.S linux-2.6.22.15-vs2.3.0.29.1/arch/i386/kernel/syscall_table.S
429--- linux-2.6.22.15/arch/i386/kernel/syscall_table.S 2007-07-21 17:59:45.000000000 -0400
430+++ linux-2.6.22.15-vs2.3.0.29.1/arch/i386/kernel/syscall_table.S 2007-12-09 06:44:17.000000000 -0500
993891e7 431@@ -272,7 +272,7 @@ ENTRY(sys_call_table)
432 .long sys_tgkill /* 270 */
433 .long sys_utimes
434 .long sys_fadvise64_64
435- .long sys_ni_syscall /* sys_vserver */
436+ .long sys_vserver
437 .long sys_mbind
438 .long sys_get_mempolicy
439 .long sys_set_mempolicy
0dc865fe
AM
440diff -Nurp linux-2.6.22.15/arch/i386/kernel/sysenter.c linux-2.6.22.15-vs2.3.0.29.1/arch/i386/kernel/sysenter.c
441--- linux-2.6.22.15/arch/i386/kernel/sysenter.c 2007-08-25 21:38:36.000000000 -0400
442+++ linux-2.6.22.15-vs2.3.0.29.1/arch/i386/kernel/sysenter.c 2007-12-09 06:44:17.000000000 -0500
993891e7 443@@ -17,6 +17,7 @@
444 #include <linux/elf.h>
445 #include <linux/mm.h>
446 #include <linux/module.h>
447+#include <linux/vs_memory.h>
448
449 #include <asm/cpufeature.h>
450 #include <asm/msr.h>
0dc865fe
AM
451diff -Nurp linux-2.6.22.15/arch/i386/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/i386/kernel/traps.c
452--- linux-2.6.22.15/arch/i386/kernel/traps.c 2007-07-21 17:59:45.000000000 -0400
453+++ linux-2.6.22.15-vs2.3.0.29.1/arch/i386/kernel/traps.c 2007-12-09 06:44:17.000000000 -0500
993891e7 454@@ -56,6 +56,8 @@
455 #include <asm/stacktrace.h>
456
457 #include <linux/module.h>
458+#include <linux/vs_context.h>
459+#include <linux/vserver/history.h>
460
461 #include "mach_traps.h"
462
463@@ -303,8 +305,8 @@ void show_registers(struct pt_regs *regs
464 regs->esi, regs->edi, regs->ebp, esp);
465 printk(KERN_EMERG "ds: %04x es: %04x fs: %04x gs: %04x ss: %04x\n",
466 regs->xds & 0xffff, regs->xes & 0xffff, regs->xfs & 0xffff, gs, ss);
467- printk(KERN_EMERG "Process %.*s (pid: %d, ti=%p task=%p task.ti=%p)",
468- TASK_COMM_LEN, current->comm, current->pid,
469+ printk(KERN_EMERG "Process %.*s (pid: %d[#%u], ti=%p task=%p task.ti=%p)",
470+ TASK_COMM_LEN, current->comm, current->pid, current->xid,
471 current_thread_info(), current, task_thread_info(current));
472 /*
473 * When in-kernel, we also print out the stack and code at the
474@@ -375,6 +377,8 @@ void die(const char * str, struct pt_reg
475
476 oops_enter();
477
478+ vxh_throw_oops();
479+
480 if (die.lock_owner != raw_smp_processor_id()) {
481 console_verbose();
482 spin_lock_irqsave(&die.lock, flags);
483@@ -412,9 +416,9 @@ void die(const char * str, struct pt_reg
484 if (nl)
485 printk("\n");
486 if (notify_die(DIE_OOPS, str, regs, err,
487- current->thread.trap_no, SIGSEGV) !=
488- NOTIFY_STOP) {
489+ current->thread.trap_no, SIGSEGV) != NOTIFY_STOP) {
490 show_registers(regs);
491+ vxh_dump_history();
492 /* Executive summary in case the oops scrolled away */
493 esp = (unsigned long) (&regs->esp);
494 savesegment(ss, ss);
0dc865fe
AM
495diff -Nurp linux-2.6.22.15/arch/i386/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/i386/mm/fault.c
496--- linux-2.6.22.15/arch/i386/mm/fault.c 2007-09-05 01:07:59.000000000 -0400
497+++ linux-2.6.22.15-vs2.3.0.29.1/arch/i386/mm/fault.c 2007-12-09 06:44:17.000000000 -0500
993891e7 498@@ -587,7 +587,8 @@ out_of_memory:
499 down_read(&mm->mmap_sem);
500 goto survive;
501 }
502- printk("VM: killing process %s\n", tsk->comm);
503+ printk("VM: killing process %s(%d:#%u)\n",
504+ tsk->comm, tsk->pid, tsk->xid);
505 if (error_code & 4)
506 do_exit(SIGKILL);
507 goto no_context;
0dc865fe
AM
508diff -Nurp linux-2.6.22.15/arch/ia64/ia32/binfmt_elf32.c linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/ia32/binfmt_elf32.c
509--- linux-2.6.22.15/arch/ia64/ia32/binfmt_elf32.c 2007-07-21 17:58:15.000000000 -0400
510+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/ia32/binfmt_elf32.c 2007-12-09 06:44:17.000000000 -0500
993891e7 511@@ -233,7 +233,8 @@ ia32_setup_arg_pages (struct linux_binpr
512 kmem_cache_free(vm_area_cachep, mpnt);
513 return ret;
514 }
515- current->mm->stack_vm = current->mm->total_vm = vma_pages(mpnt);
516+ vx_vmpages_sub(current->mm, current->mm->total_vm - vma_pages(mpnt));
517+ current->mm->stack_vm = current->mm->total_vm;
518 }
519
520 for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
0dc865fe
AM
521diff -Nurp linux-2.6.22.15/arch/ia64/ia32/ia32_entry.S linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/ia32/ia32_entry.S
522--- linux-2.6.22.15/arch/ia64/ia32/ia32_entry.S 2007-07-21 17:59:45.000000000 -0400
523+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/ia32/ia32_entry.S 2007-12-09 06:44:17.000000000 -0500
993891e7 524@@ -446,7 +446,7 @@ ia32_syscall_table:
525 data8 sys_tgkill /* 270 */
526 data8 compat_sys_utimes
527 data8 sys32_fadvise64_64
528- data8 sys_ni_syscall
529+ data8 sys32_vserver
530 data8 sys_ni_syscall
531 data8 sys_ni_syscall /* 275 */
532 data8 sys_ni_syscall
0dc865fe
AM
533diff -Nurp linux-2.6.22.15/arch/ia64/ia32/sys_ia32.c linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/ia32/sys_ia32.c
534--- linux-2.6.22.15/arch/ia64/ia32/sys_ia32.c 2007-07-21 17:58:15.000000000 -0400
535+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/ia32/sys_ia32.c 2007-12-09 06:44:17.000000000 -0500
993891e7 536@@ -1182,7 +1182,7 @@ sys32_gettimeofday (struct compat_timeva
537 {
538 if (tv) {
539 struct timeval ktv;
540- do_gettimeofday(&ktv);
541+ vx_gettimeofday(&ktv);
542 if (put_tv32(tv, &ktv))
543 return -EFAULT;
544 }
0dc865fe
AM
545diff -Nurp linux-2.6.22.15/arch/ia64/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/Kconfig
546--- linux-2.6.22.15/arch/ia64/Kconfig 2007-07-21 17:59:45.000000000 -0400
547+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/Kconfig 2007-12-09 06:44:17.000000000 -0500
548@@ -592,6 +592,8 @@ endmenu
549
550 source "arch/ia64/Kconfig.debug"
551
552+source "kernel/vserver/Kconfig"
553+
554 source "security/Kconfig"
555
556 source "crypto/Kconfig"
557diff -Nurp linux-2.6.22.15/arch/ia64/kernel/asm-offsets.c linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/asm-offsets.c
558--- linux-2.6.22.15/arch/ia64/kernel/asm-offsets.c 2007-07-21 17:58:15.000000000 -0400
559+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/asm-offsets.c 2007-12-09 06:44:17.000000000 -0500
993891e7 560@@ -192,6 +192,7 @@ void foo(void)
561 /* for assembly files which can't include sched.h: */
562 DEFINE(IA64_CLONE_VFORK, CLONE_VFORK);
563 DEFINE(IA64_CLONE_VM, CLONE_VM);
564+ DEFINE(IA64_CLONE_KTHREAD, CLONE_KTHREAD);
565
566 BLANK();
567 DEFINE(IA64_CPUINFO_NSEC_PER_CYC_OFFSET,
0dc865fe
AM
568diff -Nurp linux-2.6.22.15/arch/ia64/kernel/entry.S linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/entry.S
569--- linux-2.6.22.15/arch/ia64/kernel/entry.S 2007-07-21 17:59:45.000000000 -0400
570+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/entry.S 2007-12-09 06:44:17.000000000 -0500
993891e7 571@@ -1547,7 +1547,7 @@ sys_call_table:
572 data8 sys_mq_notify
573 data8 sys_mq_getsetattr
574 data8 sys_kexec_load
575- data8 sys_ni_syscall // reserved for vserver
576+ data8 sys_vserver
577 data8 sys_waitid // 1270
578 data8 sys_add_key
579 data8 sys_request_key
0dc865fe
AM
580diff -Nurp linux-2.6.22.15/arch/ia64/kernel/perfmon.c linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/perfmon.c
581--- linux-2.6.22.15/arch/ia64/kernel/perfmon.c 2007-07-21 17:59:45.000000000 -0400
582+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/perfmon.c 2007-12-09 06:44:17.000000000 -0500
993891e7 583@@ -40,6 +40,7 @@
584 #include <linux/capability.h>
585 #include <linux/rcupdate.h>
586 #include <linux/completion.h>
587+#include <linux/vs_memory.h>
588
589 #include <asm/errno.h>
590 #include <asm/intrinsics.h>
591@@ -2395,7 +2396,7 @@ pfm_smpl_buffer_alloc(struct task_struct
592 */
593 insert_vm_struct(mm, vma);
594
595- mm->total_vm += size >> PAGE_SHIFT;
596+ vx_vmpages_add(mm, size >> PAGE_SHIFT);
597 vm_stat_account(vma->vm_mm, vma->vm_flags, vma->vm_file,
598 vma_pages(vma));
599 up_write(&task->mm->mmap_sem);
0dc865fe
AM
600diff -Nurp linux-2.6.22.15/arch/ia64/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/process.c
601--- linux-2.6.22.15/arch/ia64/kernel/process.c 2007-07-21 17:59:45.000000000 -0400
602+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/process.c 2007-12-09 06:44:17.000000000 -0500
993891e7 603@@ -105,7 +105,8 @@ show_regs (struct pt_regs *regs)
604 unsigned long ip = regs->cr_iip + ia64_psr(regs)->ri;
605
606 print_modules();
607- printk("\nPid: %d, CPU %d, comm: %20s\n", current->pid, smp_processor_id(), current->comm);
608+ printk("\nPid: %d[#%u], CPU %d, comm: %20s\n",
609+ current->pid, current->xid, smp_processor_id(), current->comm);
610 printk("psr : %016lx ifs : %016lx ip : [<%016lx>] %s\n",
611 regs->cr_ipsr, regs->cr_ifs, ip, print_tainted());
612 print_symbol("ip is at %s\n", ip);
613@@ -696,7 +697,8 @@ kernel_thread (int (*fn)(void *), void *
614 regs.sw.ar_fpsr = regs.pt.ar_fpsr = ia64_getreg(_IA64_REG_AR_FPSR);
615 regs.sw.ar_bspstore = (unsigned long) current + IA64_RBS_OFFSET;
616 regs.sw.pr = (1 << PRED_KERNEL_STACK);
617- return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs.pt, 0, NULL, NULL);
618+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
619+ 0, &regs.pt, 0, NULL, NULL);
620 }
621 EXPORT_SYMBOL(kernel_thread);
622
0dc865fe
AM
623diff -Nurp linux-2.6.22.15/arch/ia64/kernel/ptrace.c linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/ptrace.c
624--- linux-2.6.22.15/arch/ia64/kernel/ptrace.c 2007-07-21 17:58:15.000000000 -0400
625+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/ptrace.c 2007-12-09 06:44:18.000000000 -0500
993891e7 626@@ -17,6 +17,7 @@
627 #include <linux/security.h>
628 #include <linux/audit.h>
629 #include <linux/signal.h>
630+#include <linux/vs_base.h>
631
632 #include <asm/pgtable.h>
633 #include <asm/processor.h>
634@@ -1443,6 +1444,9 @@ sys_ptrace (long request, pid_t pid, uns
635 read_unlock(&tasklist_lock);
636 if (!child)
637 goto out;
638+ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT))
639+ goto out_tsk;
640+
641 ret = -EPERM;
642 if (pid == 1) /* no messing around with init! */
643 goto out_tsk;
0dc865fe
AM
644diff -Nurp linux-2.6.22.15/arch/ia64/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/traps.c
645--- linux-2.6.22.15/arch/ia64/kernel/traps.c 2007-07-21 17:59:45.000000000 -0400
646+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/kernel/traps.c 2007-12-09 06:44:18.000000000 -0500
993891e7 647@@ -60,8 +60,9 @@ die (const char *str, struct pt_regs *re
648 put_cpu();
649
650 if (++die.lock_owner_depth < 3) {
651- printk("%s[%d]: %s %ld [%d]\n",
652- current->comm, current->pid, str, err, ++die_counter);
653+ printk("%s[%d[#%u]]: %s %ld [%d]\n",
654+ current->comm, current->pid, current->xid,
655+ str, err, ++die_counter);
656 (void) notify_die(DIE_OOPS, (char *)str, regs, err, 255, SIGSEGV);
657 show_regs(regs);
658 } else
659@@ -313,8 +314,9 @@ handle_fpu_swa (int fp_fault, struct pt_
660 if ((last.count & 15) < 5 && (ia64_fetchadd(1, &last.count, acq) & 15) < 5) {
661 last.time = current_jiffies + 5 * HZ;
662 printk(KERN_WARNING
663- "%s(%d): floating-point assist fault at ip %016lx, isr %016lx\n",
664- current->comm, current->pid, regs->cr_iip + ia64_psr(regs)->ri, isr);
665+ "%s(%d[#%u]): floating-point assist fault at ip %016lx, isr %016lx\n",
666+ current->comm, current->pid, current->xid,
667+ regs->cr_iip + ia64_psr(regs)->ri, isr);
668 }
669 }
670 }
0dc865fe
AM
671diff -Nurp linux-2.6.22.15/arch/ia64/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/mm/fault.c
672--- linux-2.6.22.15/arch/ia64/mm/fault.c 2007-07-21 17:59:45.000000000 -0400
673+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ia64/mm/fault.c 2007-12-09 06:44:18.000000000 -0500
993891e7 674@@ -10,6 +10,7 @@
675 #include <linux/interrupt.h>
676 #include <linux/kprobes.h>
677 #include <linux/kdebug.h>
678+#include <linux/vs_memory.h>
679
680 #include <asm/pgtable.h>
681 #include <asm/processor.h>
0dc865fe
AM
682diff -Nurp linux-2.6.22.15/arch/m32r/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/m32r/kernel/process.c
683--- linux-2.6.22.15/arch/m32r/kernel/process.c 2007-07-21 17:58:15.000000000 -0400
684+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m32r/kernel/process.c 2007-12-09 06:44:18.000000000 -0500
993891e7 685@@ -211,8 +211,8 @@ int kernel_thread(int (*fn)(void *), voi
686 regs.psw = M32R_PSW_BIE;
687
688 /* Ok, create the new process. */
689- return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL,
690- NULL);
691+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
692+ 0, &regs, 0, NULL, NULL);
693 }
694
695 /*
0dc865fe
AM
696diff -Nurp linux-2.6.22.15/arch/m32r/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/m32r/kernel/traps.c
697--- linux-2.6.22.15/arch/m32r/kernel/traps.c 2007-05-04 09:57:13.000000000 -0400
698+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m32r/kernel/traps.c 2007-12-09 06:44:18.000000000 -0500
993891e7 699@@ -195,8 +195,9 @@ static void show_registers(struct pt_reg
700 } else {
701 printk("SPI: %08lx\n", sp);
702 }
703- printk("Process %s (pid: %d, process nr: %d, stackpage=%08lx)",
704- current->comm, current->pid, 0xffff & i, 4096+(unsigned long)current);
705+ printk("Process %s (pid: %d[#%u], process nr: %d, stackpage=%08lx)",
706+ current->comm, current->pid, current->xid,
707+ 0xffff & i, 4096+(unsigned long)current);
708
709 /*
710 * When in-kernel, we also print out the stack and code at the
0dc865fe
AM
711diff -Nurp linux-2.6.22.15/arch/m68k/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/m68k/Kconfig
712--- linux-2.6.22.15/arch/m68k/Kconfig 2007-07-21 17:59:45.000000000 -0400
713+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m68k/Kconfig 2007-12-09 06:44:18.000000000 -0500
993891e7 714@@ -678,6 +678,8 @@ source "fs/Kconfig"
715
716 source "arch/m68k/Kconfig.debug"
717
718+source "kernel/vserver/Kconfig"
719+
720 source "security/Kconfig"
721
722 source "crypto/Kconfig"
0dc865fe
AM
723diff -Nurp linux-2.6.22.15/arch/m68k/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/m68k/kernel/process.c
724--- linux-2.6.22.15/arch/m68k/kernel/process.c 2007-05-04 09:57:14.000000000 -0400
725+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m68k/kernel/process.c 2007-12-09 06:44:18.000000000 -0500
993891e7 726@@ -159,7 +159,8 @@ int kernel_thread(int (*fn)(void *), voi
727
728 {
729 register long retval __asm__ ("d0");
730- register long clone_arg __asm__ ("d1") = flags | CLONE_VM | CLONE_UNTRACED;
731+ register long clone_arg __asm__ ("d1") =
732+ flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD;
733
734 retval = __NR_clone;
735 __asm__ __volatile__
0dc865fe
AM
736diff -Nurp linux-2.6.22.15/arch/m68k/kernel/ptrace.c linux-2.6.22.15-vs2.3.0.29.1/arch/m68k/kernel/ptrace.c
737--- linux-2.6.22.15/arch/m68k/kernel/ptrace.c 2007-07-21 17:59:45.000000000 -0400
738+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m68k/kernel/ptrace.c 2007-12-09 06:44:18.000000000 -0500
993891e7 739@@ -18,6 +18,7 @@
740 #include <linux/ptrace.h>
741 #include <linux/user.h>
742 #include <linux/signal.h>
743+#include <linux/vs_base.h>
744
745 #include <asm/uaccess.h>
746 #include <asm/page.h>
747@@ -278,6 +279,8 @@ long arch_ptrace(struct task_struct *chi
748 ret = ptrace_request(child, request, addr, data);
749 break;
750 }
751+ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT))
752+ goto out_tsk;
753
754 return ret;
755 out_eio:
0dc865fe
AM
756diff -Nurp linux-2.6.22.15/arch/m68k/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/m68k/kernel/traps.c
757--- linux-2.6.22.15/arch/m68k/kernel/traps.c 2007-07-21 17:58:15.000000000 -0400
758+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m68k/kernel/traps.c 2007-12-09 06:44:18.000000000 -0500
993891e7 759@@ -899,8 +899,8 @@ void show_registers(struct pt_regs *regs
760 printk("d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n",
761 regs->d4, regs->d5, regs->a0, regs->a1);
762
763- printk("Process %s (pid: %d, task=%p)\n",
764- current->comm, current->pid, current);
765+ printk("Process %s (pid: %d[#%u], task=%p)\n",
766+ current->comm, current->pid, current->xid, current);
767 addr = (unsigned long)&fp->un;
768 printk("Frame format=%X ", regs->format);
769 switch (regs->format) {
0dc865fe
AM
770diff -Nurp linux-2.6.22.15/arch/m68knommu/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/m68knommu/Kconfig
771--- linux-2.6.22.15/arch/m68knommu/Kconfig 2007-07-21 17:59:45.000000000 -0400
772+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m68knommu/Kconfig 2007-12-09 06:44:18.000000000 -0500
993891e7 773@@ -670,6 +670,8 @@ source "fs/Kconfig"
774
775 source "arch/m68knommu/Kconfig.debug"
776
777+source "kernel/vserver/Kconfig"
778+
779 source "security/Kconfig"
780
781 source "crypto/Kconfig"
0dc865fe
AM
782diff -Nurp linux-2.6.22.15/arch/m68knommu/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/m68knommu/kernel/process.c
783--- linux-2.6.22.15/arch/m68knommu/kernel/process.c 2007-05-04 09:58:04.000000000 -0400
784+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m68knommu/kernel/process.c 2007-12-09 06:44:18.000000000 -0500
993891e7 785@@ -122,7 +122,7 @@ void show_regs(struct pt_regs * regs)
786 int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
787 {
788 int retval;
789- long clone_arg = flags | CLONE_VM;
790+ long clone_arg = flags | CLONE_VM | CLONE_KTHREAD;
791 mm_segment_t fs;
792
793 fs = get_fs();
0dc865fe
AM
794diff -Nurp linux-2.6.22.15/arch/m68knommu/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/m68knommu/kernel/traps.c
795--- linux-2.6.22.15/arch/m68knommu/kernel/traps.c 2007-07-21 17:58:15.000000000 -0400
796+++ linux-2.6.22.15-vs2.3.0.29.1/arch/m68knommu/kernel/traps.c 2007-12-09 06:44:18.000000000 -0500
993891e7 797@@ -80,8 +80,9 @@ void die_if_kernel(char *str, struct pt_
798 printk(KERN_EMERG "d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n",
799 fp->d4, fp->d5, fp->a0, fp->a1);
800
801- printk(KERN_EMERG "Process %s (pid: %d, stackpage=%08lx)\n",
802- current->comm, current->pid, PAGE_SIZE+(unsigned long)current);
803+ printk(KERN_EMERG "Process %s (pid: %d[#%u], stackpage=%08lx)\n",
804+ current->comm, current->pid, current->xid,
805+ PAGE_SIZE+(unsigned long)current);
806 show_stack(NULL, (unsigned long *)fp);
807 do_exit(SIGSEGV);
808 }
0dc865fe
AM
809diff -Nurp linux-2.6.22.15/arch/mips/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/mips/Kconfig
810--- linux-2.6.22.15/arch/mips/Kconfig 2007-07-21 17:59:45.000000000 -0400
811+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/Kconfig 2007-12-09 06:44:18.000000000 -0500
993891e7 812@@ -1959,6 +1959,8 @@ source "arch/mips/oprofile/Kconfig"
813
814 source "arch/mips/Kconfig.debug"
815
816+source "kernel/vserver/Kconfig"
817+
818 source "security/Kconfig"
819
820 source "crypto/Kconfig"
0dc865fe
AM
821diff -Nurp linux-2.6.22.15/arch/mips/kernel/linux32.c linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/linux32.c
822--- linux-2.6.22.15/arch/mips/kernel/linux32.c 2007-07-21 17:59:45.000000000 -0400
823+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/linux32.c 2007-12-09 06:44:18.000000000 -0500
993891e7 824@@ -229,7 +229,7 @@ sys32_gettimeofday(struct compat_timeval
825 {
826 if (tv) {
827 struct timeval ktv;
828- do_gettimeofday(&ktv);
829+ vx_gettimeofday(&ktv);
830 if (put_tv32(tv, &ktv))
831 return -EFAULT;
832 }
0dc865fe
AM
833diff -Nurp linux-2.6.22.15/arch/mips/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/process.c
834--- linux-2.6.22.15/arch/mips/kernel/process.c 2007-07-21 17:58:16.000000000 -0400
835+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/process.c 2007-12-09 06:44:18.000000000 -0500
993891e7 836@@ -236,7 +236,8 @@ long kernel_thread(int (*fn)(void *), vo
837 #endif
838
839 /* Ok, create the new process.. */
840- return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
841+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
842+ 0, &regs, 0, NULL, NULL);
843 }
844
845 /*
0dc865fe
AM
846diff -Nurp linux-2.6.22.15/arch/mips/kernel/ptrace.c linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/ptrace.c
847--- linux-2.6.22.15/arch/mips/kernel/ptrace.c 2007-07-21 17:59:45.000000000 -0400
848+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/ptrace.c 2007-12-09 06:44:18.000000000 -0500
993891e7 849@@ -25,6 +25,7 @@
850 #include <linux/user.h>
851 #include <linux/security.h>
852 #include <linux/signal.h>
853+#include <linux/vs_base.h>
854
855 #include <asm/byteorder.h>
856 #include <asm/cpu.h>
857@@ -171,6 +172,9 @@ long arch_ptrace(struct task_struct *chi
858 {
859 int ret;
860
861+ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT))
862+ goto out;
863+
864 switch (request) {
865 /* when I and D space are separate, these will need to be fixed. */
866 case PTRACE_PEEKTEXT: /* read word at location addr. */
0dc865fe
AM
867diff -Nurp linux-2.6.22.15/arch/mips/kernel/scall32-o32.S linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/scall32-o32.S
868--- linux-2.6.22.15/arch/mips/kernel/scall32-o32.S 2007-07-21 17:59:45.000000000 -0400
869+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/scall32-o32.S 2007-12-09 06:44:18.000000000 -0500
993891e7 870@@ -619,7 +619,7 @@ einval: li v0, -EINVAL
871 sys sys_mq_timedreceive 5
872 sys sys_mq_notify 2 /* 4275 */
873 sys sys_mq_getsetattr 3
874- sys sys_ni_syscall 0 /* sys_vserver */
875+ sys sys_vserver 3
876 sys sys_waitid 5
877 sys sys_ni_syscall 0 /* available, was setaltroot */
878 sys sys_add_key 5 /* 4280 */
0dc865fe
AM
879diff -Nurp linux-2.6.22.15/arch/mips/kernel/scall64-64.S linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/scall64-64.S
880--- linux-2.6.22.15/arch/mips/kernel/scall64-64.S 2007-07-21 17:59:45.000000000 -0400
881+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/scall64-64.S 2007-12-09 06:44:18.000000000 -0500
993891e7 882@@ -434,7 +434,7 @@ sys_call_table:
883 PTR sys_mq_timedreceive
884 PTR sys_mq_notify
885 PTR sys_mq_getsetattr /* 5235 */
886- PTR sys_ni_syscall /* sys_vserver */
887+ PTR sys_vserver
888 PTR sys_waitid
889 PTR sys_ni_syscall /* available, was setaltroot */
890 PTR sys_add_key
0dc865fe
AM
891diff -Nurp linux-2.6.22.15/arch/mips/kernel/scall64-n32.S linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/scall64-n32.S
892--- linux-2.6.22.15/arch/mips/kernel/scall64-n32.S 2007-07-21 17:59:45.000000000 -0400
893+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/scall64-n32.S 2007-12-09 06:44:18.000000000 -0500
993891e7 894@@ -360,7 +360,7 @@ EXPORT(sysn32_call_table)
895 PTR compat_sys_mq_timedreceive
896 PTR compat_sys_mq_notify
897 PTR compat_sys_mq_getsetattr
898- PTR sys_ni_syscall /* 6240, sys_vserver */
899+ PTR sys32_vserver /* 6240 */
900 PTR compat_sys_waitid
901 PTR sys_ni_syscall /* available, was setaltroot */
902 PTR sys_add_key
0dc865fe
AM
903diff -Nurp linux-2.6.22.15/arch/mips/kernel/scall64-o32.S linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/scall64-o32.S
904--- linux-2.6.22.15/arch/mips/kernel/scall64-o32.S 2007-07-21 17:59:45.000000000 -0400
905+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/scall64-o32.S 2007-12-09 06:44:18.000000000 -0500
993891e7 906@@ -482,7 +482,7 @@ sys_call_table:
907 PTR compat_sys_mq_timedreceive
908 PTR compat_sys_mq_notify /* 4275 */
909 PTR compat_sys_mq_getsetattr
910- PTR sys_ni_syscall /* sys_vserver */
911+ PTR sys32_vserver
912 PTR sys32_waitid
913 PTR sys_ni_syscall /* available, was setaltroot */
914 PTR sys_add_key /* 4280 */
0dc865fe
AM
915diff -Nurp linux-2.6.22.15/arch/mips/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/traps.c
916--- linux-2.6.22.15/arch/mips/kernel/traps.c 2007-07-21 17:59:48.000000000 -0400
917+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/kernel/traps.c 2007-12-09 06:44:18.000000000 -0500
993891e7 918@@ -302,8 +302,9 @@ void show_registers(struct pt_regs *regs
919 {
920 show_regs(regs);
921 print_modules();
922- printk("Process %s (pid: %d, threadinfo=%p, task=%p)\n",
923- current->comm, current->pid, current_thread_info(), current);
924+ printk("Process %s (pid: %d:#%u, threadinfo=%p, task=%p)\n",
925+ current->comm, current->pid, current->xid,
926+ current_thread_info(), current);
927 show_stacktrace(current, regs);
928 show_code((unsigned int *) regs->cp0_epc);
929 printk("\n");
0dc865fe
AM
930diff -Nurp linux-2.6.22.15/arch/mips/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/mips/mm/fault.c
931--- linux-2.6.22.15/arch/mips/mm/fault.c 2007-07-21 17:59:48.000000000 -0400
932+++ linux-2.6.22.15-vs2.3.0.29.1/arch/mips/mm/fault.c 2007-12-09 06:44:18.000000000 -0500
993891e7 933@@ -179,7 +179,8 @@ out_of_memory:
934 down_read(&mm->mmap_sem);
935 goto survive;
936 }
937- printk("VM: killing process %s\n", tsk->comm);
938+ printk("VM: killing process %s(%d:#%u)\n",
939+ tsk->comm, tsk->pid, tsk->xid);
940 if (user_mode(regs))
941 do_exit(SIGKILL);
942 goto no_context;
0dc865fe
AM
943diff -Nurp linux-2.6.22.15/arch/parisc/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/Kconfig
944--- linux-2.6.22.15/arch/parisc/Kconfig 2007-07-21 17:58:18.000000000 -0400
945+++ linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/Kconfig 2007-12-09 06:44:18.000000000 -0500
993891e7 946@@ -271,6 +271,8 @@ source "arch/parisc/oprofile/Kconfig"
947
948 source "arch/parisc/Kconfig.debug"
949
950+source "kernel/vserver/Kconfig"
951+
952 source "security/Kconfig"
953
954 source "crypto/Kconfig"
0dc865fe
AM
955diff -Nurp linux-2.6.22.15/arch/parisc/kernel/entry.S linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/entry.S
956--- linux-2.6.22.15/arch/parisc/kernel/entry.S 2007-07-21 17:59:48.000000000 -0400
957+++ linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/entry.S 2007-12-09 06:44:18.000000000 -0500
993891e7 958@@ -761,6 +761,7 @@ END(fault_vector_11)
959
960 #define CLONE_VM 0x100 /* Must agree with <linux/sched.h> */
961 #define CLONE_UNTRACED 0x00800000
962+#define CLONE_KTHREAD 0x10000000
963
964 .import do_fork
965 ENTRY(__kernel_thread)
0dc865fe
AM
966diff -Nurp linux-2.6.22.15/arch/parisc/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/process.c
967--- linux-2.6.22.15/arch/parisc/kernel/process.c 2007-07-21 17:59:48.000000000 -0400
968+++ linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/process.c 2007-12-09 06:44:18.000000000 -0500
993891e7 969@@ -173,7 +173,7 @@ pid_t kernel_thread(int (*fn)(void *), v
970 * kernel_thread can become a #define.
971 */
972
973- return __kernel_thread(fn, arg, flags);
974+ return __kernel_thread(fn, arg, flags | CLONE_KTHREAD);
975 }
976 EXPORT_SYMBOL(kernel_thread);
977
0dc865fe
AM
978diff -Nurp linux-2.6.22.15/arch/parisc/kernel/syscall_table.S linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/syscall_table.S
979--- linux-2.6.22.15/arch/parisc/kernel/syscall_table.S 2007-07-21 17:59:48.000000000 -0400
980+++ linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/syscall_table.S 2007-12-09 06:44:18.000000000 -0500
981@@ -363,7 +363,7 @@
982 ENTRY_COMP(mbind) /* 260 */
983 ENTRY_COMP(get_mempolicy)
984 ENTRY_COMP(set_mempolicy)
985- ENTRY_SAME(ni_syscall) /* 263: reserved for vserver */
986+ ENTRY_DIFF(vserver)
987 ENTRY_SAME(add_key)
988 ENTRY_SAME(request_key) /* 265 */
989 ENTRY_SAME(keyctl)
990diff -Nurp linux-2.6.22.15/arch/parisc/kernel/sys_parisc32.c linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/sys_parisc32.c
991--- linux-2.6.22.15/arch/parisc/kernel/sys_parisc32.c 2007-07-21 17:59:48.000000000 -0400
992+++ linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/sys_parisc32.c 2007-12-09 06:44:18.000000000 -0500
993891e7 993@@ -204,11 +204,11 @@ static inline long get_ts32(struct times
994 asmlinkage int
995 sys32_gettimeofday(struct compat_timeval __user *tv, struct timezone __user *tz)
996 {
997- extern void do_gettimeofday(struct timeval *tv);
998+ extern void vx_gettimeofday(struct timeval *tv);
999
1000 if (tv) {
1001 struct timeval ktv;
1002- do_gettimeofday(&ktv);
1003+ vx_gettimeofday(&ktv);
1004 if (put_compat_timeval(tv, &ktv))
1005 return -EFAULT;
1006 }
0dc865fe
AM
1007diff -Nurp linux-2.6.22.15/arch/parisc/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/traps.c
1008--- linux-2.6.22.15/arch/parisc/kernel/traps.c 2007-07-21 17:59:48.000000000 -0400
1009+++ linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/kernel/traps.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1010@@ -218,8 +218,9 @@ void die_if_kernel(char *str, struct pt_
1011 if (err == 0)
1012 return; /* STFU */
1013
1014- printk(KERN_CRIT "%s (pid %d): %s (code %ld) at " RFMT "\n",
1015- current->comm, current->pid, str, err, regs->iaoq[0]);
1016+ printk(KERN_CRIT "%s (pid %d:#%u): %s (code %ld) at " RFMT "\n",
1017+ current->comm, current->pid, current->xid,
1018+ str, err, regs->iaoq[0]);
1019 #ifdef PRINT_USER_FAULTS
1020 /* XXX for debugging only */
1021 show_regs(regs);
1022@@ -251,8 +252,8 @@ KERN_CRIT " || |
1023 pdc_console_restart();
1024
1025 if (err)
1026- printk(KERN_CRIT "%s (pid %d): %s (code %ld)\n",
1027- current->comm, current->pid, str, err);
1028+ printk(KERN_CRIT "%s (pid %d:#%u): %s (code %ld)\n",
1029+ current->comm, current->pid, current->xid, str, err);
1030
1031 /* Wot's wrong wif bein' racy? */
1032 if (current->thread.flags & PARISC_KERNEL_DEATH) {
0dc865fe
AM
1033diff -Nurp linux-2.6.22.15/arch/parisc/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/mm/fault.c
1034--- linux-2.6.22.15/arch/parisc/mm/fault.c 2007-07-21 17:58:18.000000000 -0400
1035+++ linux-2.6.22.15-vs2.3.0.29.1/arch/parisc/mm/fault.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1036@@ -209,8 +209,9 @@ bad_area:
1037
1038 #ifdef PRINT_USER_FAULTS
1039 printk(KERN_DEBUG "\n");
1040- printk(KERN_DEBUG "do_page_fault() pid=%d command='%s' type=%lu address=0x%08lx\n",
1041- tsk->pid, tsk->comm, code, address);
1042+ printk(KERN_DEBUG "do_page_fault() pid=%d:#%u "
1043+ "command='%s' type=%lu address=0x%08lx\n",
1044+ tsk->pid, tsk->xid, tsk->comm, code, address);
1045 if (vma) {
1046 printk(KERN_DEBUG "vm_start = 0x%08lx, vm_end = 0x%08lx\n",
1047 vma->vm_start, vma->vm_end);
1048@@ -260,7 +261,8 @@ no_context:
1049
1050 out_of_memory:
1051 up_read(&mm->mmap_sem);
1052- printk(KERN_CRIT "VM: killing process %s\n", current->comm);
1053+ printk(KERN_CRIT "VM: killing process %s(%d:#%u)\n",
1054+ current->comm, current->pid, current->xid);
1055 if (user_mode(regs))
1056 do_exit(SIGKILL);
1057 goto no_context;
0dc865fe
AM
1058diff -Nurp linux-2.6.22.15/arch/powerpc/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/Kconfig
1059--- linux-2.6.22.15/arch/powerpc/Kconfig 2007-07-21 17:59:48.000000000 -0400
1060+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/Kconfig 2007-12-09 06:44:18.000000000 -0500
993891e7 1061@@ -906,6 +906,8 @@ endmenu
1062
1063 source "arch/powerpc/Kconfig.debug"
1064
1065+source "kernel/vserver/Kconfig"
1066+
1067 source "security/Kconfig"
1068
1069 config KEYS_COMPAT
0dc865fe
AM
1070diff -Nurp linux-2.6.22.15/arch/powerpc/kernel/asm-offsets.c linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/asm-offsets.c
1071--- linux-2.6.22.15/arch/powerpc/kernel/asm-offsets.c 2007-07-21 17:59:48.000000000 -0400
1072+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/asm-offsets.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1073@@ -250,6 +250,7 @@ int main(void)
1074
1075 DEFINE(CLONE_VM, CLONE_VM);
1076 DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
1077+ DEFINE(CLONE_KTHREAD, CLONE_KTHREAD);
1078
1079 #ifndef CONFIG_PPC64
1080 DEFINE(MM_PGD, offsetof(struct mm_struct, pgd));
0dc865fe
AM
1081diff -Nurp linux-2.6.22.15/arch/powerpc/kernel/irq.c linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/irq.c
1082--- linux-2.6.22.15/arch/powerpc/kernel/irq.c 2007-07-21 17:59:48.000000000 -0400
1083+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/irq.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1084@@ -53,6 +53,7 @@
1085 #include <linux/mutex.h>
1086 #include <linux/bootmem.h>
1087 #include <linux/pci.h>
1088+#include <linux/vs_context.h>
1089
1090 #include <asm/uaccess.h>
1091 #include <asm/system.h>
0dc865fe
AM
1092diff -Nurp linux-2.6.22.15/arch/powerpc/kernel/misc_32.S linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/misc_32.S
1093--- linux-2.6.22.15/arch/powerpc/kernel/misc_32.S 2007-07-21 17:59:48.000000000 -0400
1094+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/misc_32.S 2007-12-09 06:44:18.000000000 -0500
993891e7 1095@@ -745,7 +745,7 @@ _GLOBAL(kernel_thread)
1096 mr r30,r3 /* function */
1097 mr r31,r4 /* argument */
1098 ori r3,r5,CLONE_VM /* flags */
1099- oris r3,r3,CLONE_UNTRACED>>16
1100+ oris r3,r3,(CLONE_UNTRACED|CLONE_KTHREAD)>>16
1101 li r4,0 /* new sp (unused) */
1102 li r0,__NR_clone
1103 sc
0dc865fe
AM
1104diff -Nurp linux-2.6.22.15/arch/powerpc/kernel/misc_64.S linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/misc_64.S
1105--- linux-2.6.22.15/arch/powerpc/kernel/misc_64.S 2007-07-21 17:58:18.000000000 -0400
1106+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/misc_64.S 2007-12-09 06:44:18.000000000 -0500
993891e7 1107@@ -434,7 +434,7 @@ _GLOBAL(kernel_thread)
1108 mr r29,r3
1109 mr r30,r4
1110 ori r3,r5,CLONE_VM /* flags */
1111- oris r3,r3,(CLONE_UNTRACED>>16)
1112+ oris r3,r3,(CLONE_UNTRACED|CLONE_KTHREAD)>>16
1113 li r4,0 /* new sp (unused) */
1114 li r0,__NR_clone
1115 sc
0dc865fe
AM
1116diff -Nurp linux-2.6.22.15/arch/powerpc/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/process.c
1117--- linux-2.6.22.15/arch/powerpc/kernel/process.c 2007-09-29 08:11:48.000000000 -0400
1118+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/process.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1119@@ -422,8 +422,9 @@ void show_regs(struct pt_regs * regs)
1120 trap = TRAP(regs);
1121 if (trap == 0x300 || trap == 0x600)
1122 printk("DAR: "REG", DSISR: "REG"\n", regs->dar, regs->dsisr);
1123- printk("TASK = %p[%d] '%s' THREAD: %p",
1124- current, current->pid, current->comm, task_thread_info(current));
1125+ printk("TASK = %p[%d,#%u] '%s' THREAD: %p",
1126+ current, current->pid, current->xid,
1127+ current->comm, task_thread_info(current));
1128
1129 #ifdef CONFIG_SMP
1130 printk(" CPU: %d", smp_processor_id());
0dc865fe
AM
1131diff -Nurp linux-2.6.22.15/arch/powerpc/kernel/sys_ppc32.c linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/sys_ppc32.c
1132--- linux-2.6.22.15/arch/powerpc/kernel/sys_ppc32.c 2007-07-21 17:59:48.000000000 -0400
1133+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/sys_ppc32.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1134@@ -205,7 +205,7 @@ asmlinkage long compat_sys_gettimeofday(
1135 {
1136 if (tv) {
1137 struct timeval ktv;
1138- do_gettimeofday(&ktv);
1139+ vx_gettimeofday(&ktv);
1140 if (put_tv32(tv, &ktv))
1141 return -EFAULT;
1142 }
0dc865fe
AM
1143diff -Nurp linux-2.6.22.15/arch/powerpc/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/traps.c
1144--- linux-2.6.22.15/arch/powerpc/kernel/traps.c 2007-07-21 17:59:48.000000000 -0400
1145+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/traps.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1146@@ -878,8 +878,9 @@ void nonrecoverable_exception(struct pt_
1147
1148 void trace_syscall(struct pt_regs *regs)
1149 {
1150- printk("Task: %p(%d), PC: %08lX/%08lX, Syscall: %3ld, Result: %s%ld %s\n",
1151- current, current->pid, regs->nip, regs->link, regs->gpr[0],
1152+ printk("Task: %p(%d[#%u]), PC: %08lX/%08lX, Syscall: %3ld, Result: %s%ld %s\n",
1153+ current, current->pid, current->xid,
1154+ regs->nip, regs->link, regs->gpr[0],
1155 regs->ccr&0x10000000?"Error=":"", regs->gpr[3], print_tainted());
1156 }
1157
0dc865fe
AM
1158diff -Nurp linux-2.6.22.15/arch/powerpc/kernel/vdso.c linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/vdso.c
1159--- linux-2.6.22.15/arch/powerpc/kernel/vdso.c 2007-07-21 17:59:48.000000000 -0400
1160+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/kernel/vdso.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1161@@ -21,6 +21,7 @@
1162 #include <linux/elf.h>
1163 #include <linux/security.h>
1164 #include <linux/bootmem.h>
1165+#include <linux/vs_memory.h>
1166
1167 #include <asm/pgtable.h>
1168 #include <asm/system.h>
0dc865fe
AM
1169diff -Nurp linux-2.6.22.15/arch/powerpc/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/mm/fault.c
1170--- linux-2.6.22.15/arch/powerpc/mm/fault.c 2007-07-21 17:59:48.000000000 -0400
1171+++ linux-2.6.22.15-vs2.3.0.29.1/arch/powerpc/mm/fault.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1172@@ -378,7 +378,8 @@ out_of_memory:
1173 down_read(&mm->mmap_sem);
1174 goto survive;
1175 }
1176- printk("VM: killing process %s\n", current->comm);
1177+ printk("VM: killing process %s(%d:#%u)\n",
1178+ current->comm, current->pid, current->xid);
1179 if (user_mode(regs))
1180 do_exit(SIGKILL);
1181 return SIGKILL;
0dc865fe
AM
1182diff -Nurp linux-2.6.22.15/arch/ppc/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/Kconfig
1183--- linux-2.6.22.15/arch/ppc/Kconfig 2007-07-21 17:58:19.000000000 -0400
1184+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/Kconfig 2007-12-09 06:44:18.000000000 -0500
993891e7 1185@@ -1455,6 +1455,8 @@ source "arch/powerpc/oprofile/Kconfig"
1186
1187 source "arch/ppc/Kconfig.debug"
1188
1189+source "kernel/vserver/Kconfig"
1190+
1191 source "security/Kconfig"
1192
1193 source "crypto/Kconfig"
0dc865fe
AM
1194diff -Nurp linux-2.6.22.15/arch/ppc/kernel/asm-offsets.c linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/kernel/asm-offsets.c
1195--- linux-2.6.22.15/arch/ppc/kernel/asm-offsets.c 2007-07-21 17:59:49.000000000 -0400
1196+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/kernel/asm-offsets.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1197@@ -120,6 +120,7 @@ main(void)
1198 DEFINE(TRAP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, trap));
1199 DEFINE(CLONE_VM, CLONE_VM);
1200 DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
1201+ DEFINE(CLONE_KTHREAD, CLONE_KTHREAD);
1202 DEFINE(MM_PGD, offsetof(struct mm_struct, pgd));
1203
1204 /* About the CPU features table */
0dc865fe
AM
1205diff -Nurp linux-2.6.22.15/arch/ppc/kernel/misc.S linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/kernel/misc.S
1206--- linux-2.6.22.15/arch/ppc/kernel/misc.S 2007-05-04 09:57:15.000000000 -0400
1207+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/kernel/misc.S 2007-12-09 06:44:18.000000000 -0500
993891e7 1208@@ -848,7 +848,7 @@ _GLOBAL(kernel_thread)
1209 mr r30,r3 /* function */
1210 mr r31,r4 /* argument */
1211 ori r3,r5,CLONE_VM /* flags */
1212- oris r3,r3,CLONE_UNTRACED>>16
1213+ oris r3,r3,(CLONE_UNTRACED|CLONE_KTHREAD)>>16
1214 li r4,0 /* new sp (unused) */
1215 li r0,__NR_clone
1216 sc
0dc865fe
AM
1217diff -Nurp linux-2.6.22.15/arch/ppc/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/kernel/traps.c
1218--- linux-2.6.22.15/arch/ppc/kernel/traps.c 2007-07-21 17:59:49.000000000 -0400
1219+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/kernel/traps.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1220@@ -696,8 +696,9 @@ void nonrecoverable_exception(struct pt_
1221
1222 void trace_syscall(struct pt_regs *regs)
1223 {
1224- printk("Task: %p(%d), PC: %08lX/%08lX, Syscall: %3ld, Result: %s%ld %s\n",
1225- current, current->pid, regs->nip, regs->link, regs->gpr[0],
1226+ printk("Task: %p(%d[#%u]), PC: %08lX/%08lX, Syscall: %3ld, Result: %s%ld %s\n",
1227+ current, current->pid, current->xid,
1228+ regs->nip, regs->link, regs->gpr[0],
1229 regs->ccr&0x10000000?"Error=":"", regs->gpr[3], print_tainted());
1230 }
1231
0dc865fe
AM
1232diff -Nurp linux-2.6.22.15/arch/ppc/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/mm/fault.c
1233--- linux-2.6.22.15/arch/ppc/mm/fault.c 2007-05-04 09:57:15.000000000 -0400
1234+++ linux-2.6.22.15-vs2.3.0.29.1/arch/ppc/mm/fault.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1235@@ -296,7 +296,8 @@ out_of_memory:
1236 down_read(&mm->mmap_sem);
1237 goto survive;
1238 }
1239- printk("VM: killing process %s\n", current->comm);
1240+ printk("VM: killing process %s(%d:#%u)\n",
1241+ current->comm, current->pid, current->xid);
1242 if (user_mode(regs))
1243 do_exit(SIGKILL);
1244 return SIGKILL;
0dc865fe
AM
1245diff -Nurp linux-2.6.22.15/arch/s390/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/s390/Kconfig
1246--- linux-2.6.22.15/arch/s390/Kconfig 2007-07-21 17:59:49.000000000 -0400
1247+++ linux-2.6.22.15-vs2.3.0.29.1/arch/s390/Kconfig 2007-12-09 06:44:18.000000000 -0500
993891e7 1248@@ -551,6 +551,8 @@ endmenu
1249
1250 source "arch/s390/Kconfig.debug"
1251
1252+source "kernel/vserver/Kconfig"
1253+
1254 source "security/Kconfig"
1255
1256 source "crypto/Kconfig"
0dc865fe
AM
1257diff -Nurp linux-2.6.22.15/arch/s390/kernel/compat_linux.c linux-2.6.22.15-vs2.3.0.29.1/arch/s390/kernel/compat_linux.c
1258--- linux-2.6.22.15/arch/s390/kernel/compat_linux.c 2007-07-21 17:59:49.000000000 -0400
1259+++ linux-2.6.22.15-vs2.3.0.29.1/arch/s390/kernel/compat_linux.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1260@@ -567,7 +567,7 @@ asmlinkage long sys32_gettimeofday(struc
1261 {
1262 if (tv) {
1263 struct timeval ktv;
1264- do_gettimeofday(&ktv);
1265+ vx_gettimeofday(&ktv);
1266 if (put_tv32(tv, &ktv))
1267 return -EFAULT;
1268 }
0dc865fe
AM
1269diff -Nurp linux-2.6.22.15/arch/s390/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/s390/kernel/process.c
1270--- linux-2.6.22.15/arch/s390/kernel/process.c 2007-07-21 17:59:49.000000000 -0400
1271+++ linux-2.6.22.15-vs2.3.0.29.1/arch/s390/kernel/process.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1272@@ -164,9 +164,9 @@ void show_regs(struct pt_regs *regs)
1273 struct task_struct *tsk = current;
1274
1275 printk("CPU: %d %s\n", task_thread_info(tsk)->cpu, print_tainted());
1276- printk("Process %s (pid: %d, task: %p, ksp: %p)\n",
1277- current->comm, current->pid, (void *) tsk,
1278- (void *) tsk->thread.ksp);
1279+ printk("Process %s (pid: %d[#%u], task: %p, ksp: %p)\n",
1280+ current->comm, current->pid, current->xid,
1281+ (void *) tsk, (void *) tsk->thread.ksp);
1282
1283 show_registers(regs);
1284 /* Show stack backtrace if pt_regs is from kernel mode */
1285@@ -197,7 +197,7 @@ int kernel_thread(int (*fn)(void *), voi
1286 regs.orig_gpr2 = -1;
1287
1288 /* Ok, create the new process.. */
1289- return do_fork(flags | CLONE_VM | CLONE_UNTRACED,
1290+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
1291 0, &regs, 0, NULL, NULL);
1292 }
1293
0dc865fe
AM
1294diff -Nurp linux-2.6.22.15/arch/s390/kernel/ptrace.c linux-2.6.22.15-vs2.3.0.29.1/arch/s390/kernel/ptrace.c
1295--- linux-2.6.22.15/arch/s390/kernel/ptrace.c 2007-07-21 17:58:19.000000000 -0400
1296+++ linux-2.6.22.15-vs2.3.0.29.1/arch/s390/kernel/ptrace.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1297@@ -33,6 +33,7 @@
1298 #include <linux/security.h>
1299 #include <linux/audit.h>
1300 #include <linux/signal.h>
1301+#include <linux/vs_base.h>
1302
1303 #include <asm/segment.h>
1304 #include <asm/page.h>
1305@@ -725,7 +726,13 @@ sys_ptrace(long request, long pid, long
1306 goto out;
1307 }
1308
1309+ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT)) {
1310+ ret = -EPERM;
1311+ goto out_tsk;
1312+ }
1313+
1314 ret = do_ptrace(child, request, addr, data);
1315+out_tsk:
1316 put_task_struct(child);
1317 out:
1318 unlock_kernel();
0dc865fe
AM
1319diff -Nurp linux-2.6.22.15/arch/s390/kernel/syscalls.S linux-2.6.22.15-vs2.3.0.29.1/arch/s390/kernel/syscalls.S
1320--- linux-2.6.22.15/arch/s390/kernel/syscalls.S 2007-07-21 17:59:49.000000000 -0400
1321+++ linux-2.6.22.15-vs2.3.0.29.1/arch/s390/kernel/syscalls.S 2007-12-09 06:44:18.000000000 -0500
993891e7 1322@@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,sys_clock_sett
1323 SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper) /* 260 */
1324 SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
1325 SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper)
1326-NI_SYSCALL /* reserved for vserver */
1327+SYSCALL(sys_vserver,sys_vserver,sys32_vserver)
1328 SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
1329 SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
1330 SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
0dc865fe
AM
1331diff -Nurp linux-2.6.22.15/arch/s390/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/s390/mm/fault.c
1332--- linux-2.6.22.15/arch/s390/mm/fault.c 2007-07-21 17:59:49.000000000 -0400
1333+++ linux-2.6.22.15-vs2.3.0.29.1/arch/s390/mm/fault.c 2007-12-09 06:44:18.000000000 -0500
993891e7 1334@@ -216,7 +216,8 @@ static int do_out_of_memory(struct pt_re
1335 down_read(&mm->mmap_sem);
1336 return 1;
1337 }
1338- printk("VM: killing process %s\n", tsk->comm);
1339+ printk("VM: killing process %s(%d:#%u)\n",
1340+ tsk->comm, tsk->pid, tsk->xid);
1341 if (regs->psw.mask & PSW_MASK_PSTATE)
1342 do_exit(SIGKILL);
1343 do_no_context(regs, error_code, address);
0dc865fe
AM
1344diff -Nurp linux-2.6.22.15/arch/sh/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/sh/Kconfig
1345--- linux-2.6.22.15/arch/sh/Kconfig 2007-07-21 17:59:49.000000000 -0400
1346+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sh/Kconfig 2007-12-09 06:44:18.000000000 -0500
993891e7 1347@@ -723,6 +723,8 @@ source "arch/sh/oprofile/Kconfig"
1348
1349 source "arch/sh/Kconfig.debug"
1350
1351+source "kernel/vserver/Kconfig"
1352+
1353 source "security/Kconfig"
1354
1355 source "crypto/Kconfig"
0dc865fe
AM
1356diff -Nurp linux-2.6.22.15/arch/sh/kernel/irq.c linux-2.6.22.15-vs2.3.0.29.1/arch/sh/kernel/irq.c
1357--- linux-2.6.22.15/arch/sh/kernel/irq.c 2007-07-21 17:59:49.000000000 -0400
1358+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sh/kernel/irq.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1359@@ -12,6 +12,7 @@
1360 #include <linux/kernel_stat.h>
1361 #include <linux/seq_file.h>
1362 #include <linux/irq.h>
1363+#include <linux/vs_context.h>
1364 #include <asm/processor.h>
1365 #include <asm/machvec.h>
1366 #include <asm/uaccess.h>
0dc865fe
AM
1367diff -Nurp linux-2.6.22.15/arch/sh/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/sh/kernel/process.c
1368--- linux-2.6.22.15/arch/sh/kernel/process.c 2007-07-21 17:59:49.000000000 -0400
1369+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sh/kernel/process.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1370@@ -118,7 +118,8 @@ void machine_power_off(void)
1371 void show_regs(struct pt_regs * regs)
1372 {
1373 printk("\n");
1374- printk("Pid : %d, Comm: %20s\n", current->pid, current->comm);
1375+ printk("Pid : %d:#%u, Comm: %20s\n",
1376+ current->pid, current->xid, current->comm);
1377 print_symbol("PC is at %s\n", instruction_pointer(regs));
1378 printk("PC : %08lx SP : %08lx SR : %08lx ",
1379 regs->pc, regs->regs[15], regs->sr);
1380@@ -179,7 +180,7 @@ int kernel_thread(int (*fn)(void *), voi
1381 regs.sr = (1 << 30);
1382
1383 /* Ok, create the new process.. */
1384- return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0,
1385+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, 0,
1386 &regs, 0, NULL, NULL);
1387 }
1388
0dc865fe
AM
1389diff -Nurp linux-2.6.22.15/arch/sh/kernel/vsyscall/vsyscall.c linux-2.6.22.15-vs2.3.0.29.1/arch/sh/kernel/vsyscall/vsyscall.c
1390--- linux-2.6.22.15/arch/sh/kernel/vsyscall/vsyscall.c 2007-07-21 17:59:49.000000000 -0400
1391+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sh/kernel/vsyscall/vsyscall.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1392@@ -18,6 +18,7 @@
1393 #include <linux/module.h>
1394 #include <linux/elf.h>
1395 #include <linux/sched.h>
1396+#include <linux/vs_memory.h>
1397
1398 /*
1399 * Should the kernel map a VDSO page into processes and pass its
0dc865fe
AM
1400diff -Nurp linux-2.6.22.15/arch/sh/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/sh/mm/fault.c
1401--- linux-2.6.22.15/arch/sh/mm/fault.c 2007-07-21 17:59:49.000000000 -0400
1402+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sh/mm/fault.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1403@@ -201,7 +201,8 @@ out_of_memory:
1404 down_read(&mm->mmap_sem);
1405 goto survive;
1406 }
1407- printk("VM: killing process %s\n", tsk->comm);
1408+ printk("VM: killing process %s(%d:#%u)\n",
1409+ tsk->comm, tsk->pid, tsk->xid);
1410 if (user_mode(regs))
1411 do_exit(SIGKILL);
1412 goto no_context;
0dc865fe
AM
1413diff -Nurp linux-2.6.22.15/arch/sh64/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/sh64/kernel/process.c
1414--- linux-2.6.22.15/arch/sh64/kernel/process.c 2007-07-21 17:59:49.000000000 -0400
1415+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sh64/kernel/process.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1416@@ -400,8 +400,8 @@ int kernel_thread(int (*fn)(void *), voi
1417 regs.pc = (unsigned long)kernel_thread_helper;
1418 regs.sr = (1 << 30);
1419
1420- return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0,
1421- &regs, 0, NULL, NULL);
1422+ return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD,
1423+ 0, &regs, 0, NULL, NULL);
1424 }
1425
1426 /*
0dc865fe
AM
1427diff -Nurp linux-2.6.22.15/arch/sh64/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/sh64/mm/fault.c
1428--- linux-2.6.22.15/arch/sh64/mm/fault.c 2007-07-21 17:59:49.000000000 -0400
1429+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sh64/mm/fault.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1430@@ -81,7 +81,7 @@ static inline void print_vma(struct vm_a
1431
1432 static inline void print_task(struct task_struct *tsk)
1433 {
1434- printk("Task pid %d\n", tsk->pid);
1435+ printk("Task pid %d:#%u\n", tsk->pid, tsk->xid);
1436 }
1437
1438 static pte_t *lookup_pte(struct mm_struct *mm, unsigned long address)
1439@@ -330,7 +330,8 @@ out_of_memory:
1440 down_read(&mm->mmap_sem);
1441 goto survive;
1442 }
1443- printk("VM: killing process %s\n", tsk->comm);
1444+ printk("VM: killing process %s(%d:#%u)\n",
1445+ tsk->comm, tsk->pid, tsk->xid);
1446 if (user_mode(regs))
1447 do_exit(SIGKILL);
1448 goto no_context;
0dc865fe
AM
1449diff -Nurp linux-2.6.22.15/arch/sparc/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/Kconfig
1450--- linux-2.6.22.15/arch/sparc/Kconfig 2007-07-21 17:59:49.000000000 -0400
1451+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/Kconfig 2007-12-09 06:44:19.000000000 -0500
993891e7 1452@@ -317,6 +317,8 @@ endmenu
1453
1454 source "arch/sparc/Kconfig.debug"
1455
1456+source "kernel/vserver/Kconfig"
1457+
1458 source "security/Kconfig"
1459
1460 source "crypto/Kconfig"
0dc865fe
AM
1461diff -Nurp linux-2.6.22.15/arch/sparc/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/kernel/process.c
1462--- linux-2.6.22.15/arch/sparc/kernel/process.c 2007-07-21 17:59:49.000000000 -0400
1463+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/kernel/process.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1464@@ -705,7 +705,8 @@ pid_t kernel_thread(int (*fn)(void *), v
1465 /* Notreached by child. */
1466 "1: mov %%o0, %0\n\t" :
1467 "=r" (retval) :
1468- "i" (__NR_clone), "r" (flags | CLONE_VM | CLONE_UNTRACED),
1469+ "i" (__NR_clone), "r" (flags |
1470+ CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD),
1471 "i" (__NR_exit), "r" (fn), "r" (arg) :
1472 "g1", "g2", "g3", "o0", "o1", "memory", "cc");
1473 return retval;
0dc865fe
AM
1474diff -Nurp linux-2.6.22.15/arch/sparc/kernel/ptrace.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/kernel/ptrace.c
1475--- linux-2.6.22.15/arch/sparc/kernel/ptrace.c 2007-05-04 09:58:05.000000000 -0400
1476+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/kernel/ptrace.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1477@@ -19,6 +19,7 @@
1478 #include <linux/smp_lock.h>
1479 #include <linux/security.h>
1480 #include <linux/signal.h>
1481+#include <linux/vs_base.h>
1482
1483 #include <asm/pgtable.h>
1484 #include <asm/system.h>
1485@@ -302,6 +303,10 @@ asmlinkage void do_ptrace(struct pt_regs
1486 pt_error_return(regs, -ret);
1487 goto out;
1488 }
1489+ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT)) {
1490+ pt_error_return(regs, ESRCH);
1491+ goto out_tsk;
1492+ }
1493
1494 if ((current->personality == PER_SUNOS && request == PTRACE_SUNATTACH)
1495 || (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
0dc865fe
AM
1496diff -Nurp linux-2.6.22.15/arch/sparc/kernel/systbls.S linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/kernel/systbls.S
1497--- linux-2.6.22.15/arch/sparc/kernel/systbls.S 2007-07-21 17:59:49.000000000 -0400
1498+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/kernel/systbls.S 2007-12-09 06:44:19.000000000 -0500
993891e7 1499@@ -71,7 +71,7 @@ sys_call_table:
1500 /*250*/ .long sparc_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
1501 /*255*/ .long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
1502 /*260*/ .long sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
1503-/*265*/ .long sys_timer_delete, sys_timer_create, sys_nis_syscall, sys_io_setup, sys_io_destroy
1504+/*265*/ .long sys_timer_delete, sys_timer_create, sys_vserver, sys_io_setup, sys_io_destroy
1505 /*270*/ .long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
1506 /*275*/ .long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
1507 /*280*/ .long sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
0dc865fe
AM
1508diff -Nurp linux-2.6.22.15/arch/sparc/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/kernel/traps.c
1509--- linux-2.6.22.15/arch/sparc/kernel/traps.c 2007-07-21 17:59:49.000000000 -0400
1510+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/kernel/traps.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1511@@ -99,7 +99,8 @@ void die_if_kernel(char *str, struct pt_
1512 " /_| \\__/ |_\\\n"
1513 " \\__U_/\n");
1514
1515- printk("%s(%d): %s [#%d]\n", current->comm, current->pid, str, ++die_counter);
1516+ printk("%s(%d[#%u]): %s [#%d]\n", current->comm,
1517+ current->pid, current->xid, str, ++die_counter);
1518 show_regs(regs);
1519
1520 __SAVE; __SAVE; __SAVE; __SAVE;
0dc865fe
AM
1521diff -Nurp linux-2.6.22.15/arch/sparc/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/mm/fault.c
1522--- linux-2.6.22.15/arch/sparc/mm/fault.c 2007-07-21 17:59:49.000000000 -0400
1523+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc/mm/fault.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1524@@ -367,7 +367,8 @@ no_context:
1525 */
1526 out_of_memory:
1527 up_read(&mm->mmap_sem);
1528- printk("VM: killing process %s\n", tsk->comm);
1529+ printk("VM: killing process %s(%d:#%u)\n",
1530+ tsk->comm, tsk->pid, tsk->xid);
1531 if (from_user)
1532 do_exit(SIGKILL);
1533 goto no_context;
0dc865fe
AM
1534diff -Nurp linux-2.6.22.15/arch/sparc64/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/Kconfig
1535--- linux-2.6.22.15/arch/sparc64/Kconfig 2007-07-21 17:59:49.000000000 -0400
1536+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/Kconfig 2007-12-09 06:44:19.000000000 -0500
993891e7 1537@@ -451,6 +451,8 @@ endmenu
1538
1539 source "arch/sparc64/Kconfig.debug"
1540
1541+source "kernel/vserver/Kconfig"
1542+
1543 source "security/Kconfig"
1544
1545 source "crypto/Kconfig"
0dc865fe
AM
1546diff -Nurp linux-2.6.22.15/arch/sparc64/kernel/binfmt_aout32.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/binfmt_aout32.c
1547--- linux-2.6.22.15/arch/sparc64/kernel/binfmt_aout32.c 2007-05-04 09:58:05.000000000 -0400
1548+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/binfmt_aout32.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1549@@ -27,6 +27,7 @@
1550 #include <linux/binfmts.h>
1551 #include <linux/personality.h>
1552 #include <linux/init.h>
1553+#include <linux/vs_memory.h>
1554
1555 #include <asm/system.h>
1556 #include <asm/uaccess.h>
0dc865fe
AM
1557diff -Nurp linux-2.6.22.15/arch/sparc64/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/process.c
1558--- linux-2.6.22.15/arch/sparc64/kernel/process.c 2007-07-21 17:59:49.000000000 -0400
1559+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/process.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1560@@ -707,7 +707,8 @@ pid_t kernel_thread(int (*fn)(void *), v
1561 /* Notreached by child. */
1562 "1:" :
1563 "=r" (retval) :
1564- "i" (__NR_clone), "r" (flags | CLONE_VM | CLONE_UNTRACED),
1565+ "i" (__NR_clone), "r" (flags |
1566+ CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD),
1567 "i" (__NR_exit), "r" (fn), "r" (arg) :
1568 "g1", "g2", "g3", "o0", "o1", "memory", "cc");
1569 return retval;
0dc865fe
AM
1570diff -Nurp linux-2.6.22.15/arch/sparc64/kernel/ptrace.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/ptrace.c
1571--- linux-2.6.22.15/arch/sparc64/kernel/ptrace.c 2007-05-04 09:58:05.000000000 -0400
1572+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/ptrace.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1573@@ -22,6 +22,7 @@
1574 #include <linux/seccomp.h>
1575 #include <linux/audit.h>
1576 #include <linux/signal.h>
1577+#include <linux/vs_base.h>
1578
1579 #include <asm/asi.h>
1580 #include <asm/pgtable.h>
1581@@ -215,6 +216,10 @@ asmlinkage void do_ptrace(struct pt_regs
1582 pt_error_return(regs, -ret);
1583 goto out;
1584 }
1585+ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT)) {
1586+ pt_error_return(regs, ESRCH);
1587+ goto out_tsk;
1588+ }
1589
1590 if ((current->personality == PER_SUNOS && request == PTRACE_SUNATTACH)
1591 || (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
0dc865fe
AM
1592diff -Nurp linux-2.6.22.15/arch/sparc64/kernel/sys_sparc32.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/sys_sparc32.c
1593--- linux-2.6.22.15/arch/sparc64/kernel/sys_sparc32.c 2007-07-21 17:59:49.000000000 -0400
1594+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/sys_sparc32.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1595@@ -729,7 +729,7 @@ asmlinkage long sys32_gettimeofday(struc
1596 {
1597 if (tv) {
1598 struct timeval ktv;
1599- do_gettimeofday(&ktv);
1600+ vx_gettimeofday(&ktv);
1601 if (put_tv32(tv, &ktv))
1602 return -EFAULT;
1603 }
0dc865fe
AM
1604diff -Nurp linux-2.6.22.15/arch/sparc64/kernel/systbls.S linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/systbls.S
1605--- linux-2.6.22.15/arch/sparc64/kernel/systbls.S 2007-07-21 17:59:49.000000000 -0400
1606+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/systbls.S 2007-12-09 06:44:19.000000000 -0500
993891e7 1607@@ -72,7 +72,7 @@ sys_call_table32:
1608 /*250*/ .word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl
1609 .word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
1610 /*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun
1611- .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy
1612+ .word sys_timer_delete, compat_sys_timer_create, sys32_vserver, compat_sys_io_setup, sys_io_destroy
1613 /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink
1614 .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid
1615 /*280*/ .word sys32_tee, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat
1616@@ -144,7 +144,7 @@ sys_call_table:
1617 /*250*/ .word sys64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
1618 .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
1619 /*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
1620- .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy
1621+ .word sys_timer_delete, sys_timer_create, sys_vserver, sys_io_setup, sys_io_destroy
1622 /*270*/ .word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
1623 .word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
1624 /*280*/ .word sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
0dc865fe
AM
1625diff -Nurp linux-2.6.22.15/arch/sparc64/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/traps.c
1626--- linux-2.6.22.15/arch/sparc64/kernel/traps.c 2007-09-05 01:07:59.000000000 -0400
1627+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/kernel/traps.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1628@@ -2225,7 +2225,8 @@ void die_if_kernel(char *str, struct pt_
1629 " /_| \\__/ |_\\\n"
1630 " \\__U_/\n");
1631
1632- printk("%s(%d): %s [#%d]\n", current->comm, current->pid, str, ++die_counter);
1633+ printk("%s(%d[#%u]): %s [#%d]\n", current->comm,
1634+ current->pid, current->xid, str, ++die_counter);
1635 notify_die(DIE_OOPS, str, regs, 0, 255, SIGSEGV);
1636 __asm__ __volatile__("flushw");
1637 __show_regs(regs);
0dc865fe
AM
1638diff -Nurp linux-2.6.22.15/arch/sparc64/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/mm/fault.c
1639--- linux-2.6.22.15/arch/sparc64/mm/fault.c 2007-09-05 01:07:59.000000000 -0400
1640+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/mm/fault.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1641@@ -463,7 +463,8 @@ handle_kernel_fault:
1642 out_of_memory:
1643 insn = get_fault_insn(regs, insn);
1644 up_read(&mm->mmap_sem);
1645- printk("VM: killing process %s\n", current->comm);
1646+ printk("VM: killing process %s(%d:#%u)\n",
1647+ current->comm, current->pid, current->xid);
1648 if (!(regs->tstate & TSTATE_PRIV))
1649 do_exit(SIGKILL);
1650 goto handle_kernel_fault;
0dc865fe
AM
1651diff -Nurp linux-2.6.22.15/arch/sparc64/solaris/fs.c linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/solaris/fs.c
1652--- linux-2.6.22.15/arch/sparc64/solaris/fs.c 2007-05-04 09:58:05.000000000 -0400
1653+++ linux-2.6.22.15-vs2.3.0.29.1/arch/sparc64/solaris/fs.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1654@@ -368,7 +368,7 @@ static int report_statvfs(struct vfsmoun
1655 int j = strlen (p);
1656
1657 if (j > 15) j = 15;
1658- if (IS_RDONLY(inode)) i = 1;
1659+ if (IS_RDONLY(inode) || MNT_IS_RDONLY(mnt)) i = 1;
1660 if (mnt->mnt_flags & MNT_NOSUID) i |= 2;
1661 if (!sysv_valid_dev(inode->i_sb->s_dev))
1662 return -EOVERFLOW;
1663@@ -404,7 +404,7 @@ static int report_statvfs64(struct vfsmo
1664 int j = strlen (p);
1665
1666 if (j > 15) j = 15;
1667- if (IS_RDONLY(inode)) i = 1;
1668+ if (IS_RDONLY(inode) || MNT_IS_RDONLY(mnt)) i = 1;
1669 if (mnt->mnt_flags & MNT_NOSUID) i |= 2;
1670 if (!sysv_valid_dev(inode->i_sb->s_dev))
1671 return -EOVERFLOW;
0dc865fe
AM
1672diff -Nurp linux-2.6.22.15/arch/um/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/um/Kconfig
1673--- linux-2.6.22.15/arch/um/Kconfig 2007-07-21 17:59:49.000000000 -0400
1674+++ linux-2.6.22.15-vs2.3.0.29.1/arch/um/Kconfig 2007-12-09 06:44:19.000000000 -0500
993891e7 1675@@ -316,6 +316,8 @@ source "drivers/connector/Kconfig"
1676
1677 source "fs/Kconfig"
1678
1679+source "kernel/vserver/Kconfig"
1680+
1681 source "security/Kconfig"
1682
1683 source "crypto/Kconfig"
0dc865fe
AM
1684diff -Nurp linux-2.6.22.15/arch/um/kernel/trap.c linux-2.6.22.15-vs2.3.0.29.1/arch/um/kernel/trap.c
1685--- linux-2.6.22.15/arch/um/kernel/trap.c 2007-07-21 17:59:50.000000000 -0400
1686+++ linux-2.6.22.15-vs2.3.0.29.1/arch/um/kernel/trap.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1687@@ -210,7 +210,8 @@ unsigned long segv(struct faultinfo fi,
1688 current->thread.arch.faultinfo = fi;
1689 force_sig_info(SIGBUS, &si, current);
1690 } else if (err == -ENOMEM) {
1691- printk("VM: killing process %s\n", current->comm);
1692+ printk("VM: killing process %s(%d:#%u)\n",
1693+ current->comm, current->pid, current->xid);
1694 do_exit(SIGKILL);
1695 } else {
1696 BUG_ON(err != -EFAULT);
0dc865fe
AM
1697diff -Nurp linux-2.6.22.15/arch/v850/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/v850/Kconfig
1698--- linux-2.6.22.15/arch/v850/Kconfig 2007-07-21 17:59:50.000000000 -0400
1699+++ linux-2.6.22.15-vs2.3.0.29.1/arch/v850/Kconfig 2007-12-09 06:44:19.000000000 -0500
993891e7 1700@@ -333,6 +333,8 @@ source "drivers/usb/Kconfig"
1701
1702 source "arch/v850/Kconfig.debug"
1703
1704+source "kernel/vserver/Kconfig"
1705+
1706 source "security/Kconfig"
1707
1708 source "crypto/Kconfig"
0dc865fe
AM
1709diff -Nurp linux-2.6.22.15/arch/v850/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/v850/kernel/process.c
1710--- linux-2.6.22.15/arch/v850/kernel/process.c 2007-07-21 17:59:50.000000000 -0400
1711+++ linux-2.6.22.15-vs2.3.0.29.1/arch/v850/kernel/process.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1712@@ -82,7 +82,7 @@ int kernel_thread (int (*fn)(void *), vo
1713 /* Clone this thread. Note that we don't pass the clone syscall's
1714 second argument -- it's ignored for calls from kernel mode (the
1715 child's SP is always set to the top of the kernel stack). */
1716- arg0 = flags | CLONE_VM;
1717+ arg0 = flags | CLONE_VM | CLONE_KTHREAD;
1718 syscall = __NR_clone;
1719 asm volatile ("trap " SYSCALL_SHORT_TRAP
1720 : "=r" (ret), "=r" (syscall)
0dc865fe
AM
1721diff -Nurp linux-2.6.22.15/arch/v850/kernel/ptrace.c linux-2.6.22.15-vs2.3.0.29.1/arch/v850/kernel/ptrace.c
1722--- linux-2.6.22.15/arch/v850/kernel/ptrace.c 2007-07-21 17:59:50.000000000 -0400
1723+++ linux-2.6.22.15-vs2.3.0.29.1/arch/v850/kernel/ptrace.c 2007-12-09 06:44:19.000000000 -0500
993891e7 1724@@ -23,6 +23,7 @@
1725 #include <linux/sched.h>
1726 #include <linux/ptrace.h>
1727 #include <linux/signal.h>
1728+#include <linux/vs_base.h>
1729
1730 #include <asm/errno.h>
1731 #include <asm/ptrace.h>
1732@@ -116,6 +117,9 @@ long arch_ptrace(struct task_struct *chi
1733 {
1734 int rval;
1735
1736+ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT))
1737+ goto out;
1738+
1739 switch (request) {
1740 unsigned long val, copied;
1741
0dc865fe
AM
1742diff -Nurp linux-2.6.22.15/arch/x86_64/ia32/ia32_aout.c linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/ia32_aout.c
1743--- linux-2.6.22.15/arch/x86_64/ia32/ia32_aout.c 2007-05-04 09:58:05.000000000 -0400
1744+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/ia32_aout.c 2007-12-09 06:44:20.000000000 -0500
993891e7 1745@@ -25,6 +25,7 @@
1746 #include <linux/binfmts.h>
1747 #include <linux/personality.h>
1748 #include <linux/init.h>
1749+#include <linux/vs_memory.h>
1750
1751 #include <asm/system.h>
1752 #include <asm/uaccess.h>
0dc865fe
AM
1753diff -Nurp linux-2.6.22.15/arch/x86_64/ia32/ia32_binfmt.c linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/ia32_binfmt.c
1754--- linux-2.6.22.15/arch/x86_64/ia32/ia32_binfmt.c 2007-07-21 17:59:50.000000000 -0400
1755+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/ia32_binfmt.c 2007-12-09 06:44:20.000000000 -0500
993891e7 1756@@ -324,7 +324,8 @@ int ia32_setup_arg_pages(struct linux_bi
1757 kmem_cache_free(vm_area_cachep, mpnt);
1758 return ret;
1759 }
1760- mm->stack_vm = mm->total_vm = vma_pages(mpnt);
1761+ vx_vmpages_sub(mm, mm->total_vm - vma_pages(mpnt));
1762+ mm->stack_vm = mm->total_vm;
1763 }
1764
1765 for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
0dc865fe
AM
1766diff -Nurp linux-2.6.22.15/arch/x86_64/ia32/ia32entry.S linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/ia32entry.S
1767--- linux-2.6.22.15/arch/x86_64/ia32/ia32entry.S 2007-09-29 08:11:36.000000000 -0400
1768+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/ia32entry.S 2007-12-09 06:44:20.000000000 -0500
993891e7 1769@@ -680,7 +680,7 @@ ia32_sys_call_table:
1770 .quad sys_tgkill /* 270 */
1771 .quad compat_sys_utimes
1772 .quad sys32_fadvise64_64
1773- .quad quiet_ni_syscall /* sys_vserver */
1774+ .quad sys32_vserver
1775 .quad sys_mbind
1776 .quad compat_sys_get_mempolicy /* 275 */
1777 .quad sys_set_mempolicy
0dc865fe
AM
1778diff -Nurp linux-2.6.22.15/arch/x86_64/ia32/syscall32.c linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/syscall32.c
1779--- linux-2.6.22.15/arch/x86_64/ia32/syscall32.c 2007-07-21 17:59:50.000000000 -0400
1780+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/syscall32.c 2007-12-09 06:44:20.000000000 -0500
1781@@ -10,6 +10,7 @@
1782 #include <linux/init.h>
1783 #include <linux/stringify.h>
1784 #include <linux/security.h>
1785+#include <linux/vs_memory.h>
1786 #include <asm/proto.h>
1787 #include <asm/tlbflush.h>
1788 #include <asm/ia32_unistd.h>
1789diff -Nurp linux-2.6.22.15/arch/x86_64/ia32/sys_ia32.c linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/sys_ia32.c
1790--- linux-2.6.22.15/arch/x86_64/ia32/sys_ia32.c 2007-07-21 17:59:50.000000000 -0400
1791+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/ia32/sys_ia32.c 2007-12-09 06:44:20.000000000 -0500
993891e7 1792@@ -454,7 +454,7 @@ sys32_gettimeofday(struct compat_timeval
1793 {
1794 if (tv) {
1795 struct timeval ktv;
1796- do_gettimeofday(&ktv);
1797+ vx_gettimeofday(&ktv);
1798 if (put_tv32(tv, &ktv))
1799 return -EFAULT;
1800 }
0dc865fe
AM
1801diff -Nurp linux-2.6.22.15/arch/x86_64/Kconfig linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/Kconfig
1802--- linux-2.6.22.15/arch/x86_64/Kconfig 2007-07-21 17:59:50.000000000 -0400
1803+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/Kconfig 2007-12-09 06:44:20.000000000 -0500
1804@@ -782,6 +782,8 @@ endmenu
1805
1806 source "arch/x86_64/Kconfig.debug"
1807
1808+source "kernel/vserver/Kconfig"
1809+
1810 source "security/Kconfig"
1811
1812 source "crypto/Kconfig"
1813diff -Nurp linux-2.6.22.15/arch/x86_64/kernel/process.c linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/kernel/process.c
1814--- linux-2.6.22.15/arch/x86_64/kernel/process.c 2007-07-21 17:59:50.000000000 -0400
1815+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/kernel/process.c 2007-12-09 06:44:20.000000000 -0500
993891e7 1816@@ -54,7 +54,8 @@
1817
1818 asmlinkage extern void ret_from_fork(void);
1819
1820-unsigned long kernel_thread_flags = CLONE_VM | CLONE_UNTRACED;
1821+unsigned long kernel_thread_flags =
1822+ CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD;
1823
1824 unsigned long boot_option_idle_override = 0;
1825 EXPORT_SYMBOL(boot_option_idle_override);
1826@@ -310,8 +311,8 @@ void __show_regs(struct pt_regs * regs)
1827
1828 printk("\n");
1829 print_modules();
1830- printk("Pid: %d, comm: %.20s %s %s %.*s\n",
1831- current->pid, current->comm, print_tainted(),
1832+ printk("Pid: %d:#%u, comm: %.20s %s %s %.*s\n",
1833+ current->pid, current->xid, current->comm, print_tainted(),
1834 init_utsname()->release,
1835 (int)strcspn(init_utsname()->version, " "),
1836 init_utsname()->version);
0dc865fe
AM
1837diff -Nurp linux-2.6.22.15/arch/x86_64/kernel/traps.c linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/kernel/traps.c
1838--- linux-2.6.22.15/arch/x86_64/kernel/traps.c 2007-07-21 17:59:50.000000000 -0400
1839+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/kernel/traps.c 2007-12-09 06:44:20.000000000 -0500
993891e7 1840@@ -33,6 +33,8 @@
1841 #include <linux/uaccess.h>
1842 #include <linux/bug.h>
1843 #include <linux/kdebug.h>
1844+#include <linux/vs_context.h>
1845+#include <linux/vserver/history.h>
1846
1847 #include <asm/system.h>
1848 #include <asm/io.h>
1849@@ -413,8 +415,9 @@ void show_registers(struct pt_regs *regs
1850 rsp = regs->rsp;
1851 printk("CPU %d ", cpu);
1852 __show_regs(regs);
1853- printk("Process %s (pid: %d, threadinfo %p, task %p)\n",
1854- cur->comm, cur->pid, task_thread_info(cur), cur);
1855+ printk("Process %s (pid: %d[#%u], threadinfo %p, task %p)\n",
1856+ cur->comm, cur->pid, cur->xid,
1857+ task_thread_info(cur), cur);
1858
1859 /*
1860 * When in-kernel, we also print out the stack and code at the
1861@@ -518,6 +521,7 @@ void __kprobes __die(const char * str, s
1862 printk("\n");
1863 notify_die(DIE_OOPS, str, regs, err, current->thread.trap_no, SIGSEGV);
1864 show_registers(regs);
1865+ vxh_dump_history();
1866 /* Executive summary in case the oops scrolled away */
1867 printk(KERN_ALERT "RIP ");
1868 printk_address(regs->rip);
1869@@ -530,6 +534,7 @@ void die(const char * str, struct pt_reg
1870 {
1871 unsigned long flags = oops_begin();
1872
1873+ vxh_throw_oops();
1874 if (!user_mode(regs))
1875 report_bug(regs->rip);
1876
1877@@ -542,12 +547,14 @@ void __kprobes die_nmi(char *str, struct
1878 {
1879 unsigned long flags = oops_begin();
1880
1881+ vxh_throw_oops();
1882 /*
1883 * We are in trouble anyway, lets at least try
1884 * to get a message out.
1885 */
1886 printk(str, smp_processor_id());
1887 show_registers(regs);
1888+ vxh_dump_history();
1889 if (kexec_should_crash(current))
1890 crash_kexec(regs);
1891 if (do_panic || panic_on_oops)
1892@@ -580,8 +587,8 @@ static void __kprobes do_trap(int trapnr
1893
1894 if (exception_trace && unhandled_signal(tsk, signr))
1895 printk(KERN_INFO
1896- "%s[%d] trap %s rip:%lx rsp:%lx error:%lx\n",
1897- tsk->comm, tsk->pid, str,
1898+ "%s[%d:#%u] trap %s rip:%lx rsp:%lx error:%lx\n",
1899+ tsk->comm, tsk->pid, tsk->xid, str,
1900 regs->rip, regs->rsp, error_code);
1901
1902 if (info)
1903@@ -684,8 +691,8 @@ asmlinkage void __kprobes do_general_pro
1904
1905 if (exception_trace && unhandled_signal(tsk, SIGSEGV))
1906 printk(KERN_INFO
1907- "%s[%d] general protection rip:%lx rsp:%lx error:%lx\n",
1908- tsk->comm, tsk->pid,
1909+ "%s[%d:#%u] general protection rip:%lx rsp:%lx error:%lx\n",
1910+ tsk->comm, tsk->pid, tsk->xid,
1911 regs->rip, regs->rsp, error_code);
1912
1913 force_sig(SIGSEGV, tsk);
0dc865fe
AM
1914diff -Nurp linux-2.6.22.15/arch/x86_64/mm/fault.c linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/mm/fault.c
1915--- linux-2.6.22.15/arch/x86_64/mm/fault.c 2007-07-21 17:59:50.000000000 -0400
1916+++ linux-2.6.22.15-vs2.3.0.29.1/arch/x86_64/mm/fault.c 2007-12-09 06:44:20.000000000 -0500
993891e7 1917@@ -497,10 +497,10 @@ bad_area_nosemaphore:
1918
1919 if (exception_trace && unhandled_signal(tsk, SIGSEGV)) {
1920 printk(
1921- "%s%s[%d]: segfault at %016lx rip %016lx rsp %016lx error %lx\n",
1922+ "%s%s[%d:#%u]: segfault at %016lx rip %016lx rsp %016lx error %lx\n",
1923 tsk->pid > 1 ? KERN_INFO : KERN_EMERG,
1924- tsk->comm, tsk->pid, address, regs->rip,
1925- regs->rsp, error_code);
1926+ tsk->comm, tsk->pid, tsk->xid, address,
1927+ regs->rip, regs->rsp, error_code);
1928 }
1929
1930 tsk->thread.cr2 = address;
1931@@ -567,7 +567,8 @@ out_of_memory:
1932 yield();
1933 goto again;
1934 }
1935- printk("VM: killing process %s\n", tsk->comm);
1936+ printk("VM: killing process %s(%d:#%u)\n",
1937+ tsk->comm, tsk->pid, tsk->xid);
1938 if (error_code & 4)
1939 do_exit(SIGKILL);
1940 goto no_context;
0dc865fe
AM
1941diff -Nurp linux-2.6.22.15/Documentation/vserver/debug.txt linux-2.6.22.15-vs2.3.0.29.1/Documentation/vserver/debug.txt
1942--- linux-2.6.22.15/Documentation/vserver/debug.txt 1969-12-31 19:00:00.000000000 -0500
1943+++ linux-2.6.22.15-vs2.3.0.29.1/Documentation/vserver/debug.txt 2007-12-09 06:44:17.000000000 -0500
1944@@ -0,0 +1,154 @@
1945+
1946+debug_cvirt:
1947+
1948+ 2 4 "vx_map_tgid: %p/%llx: %d -> %d"
1949+ "vx_rmap_tgid: %p/%llx: %d -> %d"
1950+
1951+debug_dlim:
1952+
1953+ 0 1 "ALLOC (%p,#%d)%c inode (%d)"
1954+ "FREE (%p,#%d)%c inode"
1955+ 1 2 "ALLOC (%p,#%d)%c %lld bytes (%d)"
1956+ "FREE (%p,#%d)%c %lld bytes"
1957+ 2 4 "ADJUST: %lld,%lld on %ld,%ld [mult=%d]"
1958+ 3 8 "ext3_has_free_blocks(%p): %lu<%lu+1, %c, %u!=%u r=%d"
1959+ "ext3_has_free_blocks(%p): free=%lu, root=%lu"
1960+ "rcu_free_dl_info(%p)"
1961+ 4 10 "alloc_dl_info(%p,%d) = %p"
1962+ "dealloc_dl_info(%p)"
1963+ "get_dl_info(%p[#%d.%d])"
1964+ "put_dl_info(%p[#%d.%d])"
1965+ 5 20 "alloc_dl_info(%p,%d)*"
1966+ 6 40 "__hash_dl_info: %p[#%d]"
1967+ "__unhash_dl_info: %p[#%d]"
1968+ 7 80 "locate_dl_info(%p,#%d) = %p"
1969+
1970+debug_misc:
1971+
1972+ 0 1 "destroy_dqhash: %p [#0x%08x] c=%d"
1973+ "new_dqhash: %p [#0x%08x]"
1974+ "vroot[%d]_clr_dev: dev=%p[%lu,%d:%d]"
1975+ "vroot[%d]_get_real_bdev: dev=%p[%lu,%d:%d]"
1976+ "vroot[%d]_set_dev: dev=%p[%lu,%d:%d]"
1977+ "vroot_get_real_bdev not set"
1978