]>
Commit | Line | Data |
---|---|---|
0dc865fe AM |
1 | diff -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 |
13 | diff -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 |
24 | diff -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 |
68 | diff -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 |
80 | diff -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 |
103 | diff -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 |
139 | diff -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 |
151 | diff -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 |
164 | diff -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 |
178 | diff -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 |
190 | diff -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 |
202 | diff -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, ®s, 0, NULL, NULL); | |
220 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
221 | + 0, ®s, 0, NULL, NULL); | |
222 | } | |
223 | EXPORT_SYMBOL(kernel_thread); | |
224 | ||
0dc865fe AM |
225 | diff -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 |
239 | diff -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 |
252 | diff -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 |
264 | diff -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 |
279 | diff -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, ®s, 0, NULL, NULL); | |
287 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
288 | + 0, ®s, 0, NULL, NULL); | |
289 | } | |
290 | EXPORT_SYMBOL(kernel_thread); | |
291 | ||
0dc865fe AM |
292 | diff -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 |
307 | diff -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, ®s, 0, NULL, NULL); | |
315 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
316 | + 0, ®s, 0, NULL, NULL); | |
317 | } | |
318 | ||
319 | /* setup the child's kernel stack with a pt_regs and switch_stack on it. | |
0dc865fe AM |
320 | diff -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, ®s, 0, NULL, NULL); | |
328 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
329 | + 0, ®s, 0, NULL, NULL); | |
330 | } | |
331 | ||
332 | /* | |
0dc865fe AM |
333 | diff -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" | |
345 | diff -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 |
366 | diff -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 |
378 | diff -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 |
390 | diff -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 |
402 | diff -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, ®s, 0, NULL, NULL); | |
423 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
424 | + 0, ®s, 0, NULL, NULL); | |
425 | } | |
426 | EXPORT_SYMBOL(kernel_thread); | |
427 | ||
0dc865fe AM |
428 | diff -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 |
440 | diff -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 |
451 | diff -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) (®s->esp); | |
494 | savesegment(ss, ss); | |
0dc865fe AM |
495 | diff -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 |
508 | diff -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 |
521 | diff -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 |
533 | diff -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 |
545 | diff -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" | |
557 | diff -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 |
568 | diff -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 |
580 | diff -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 |
600 | diff -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, ®s.pt, 0, NULL, NULL); | |
618 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
619 | + 0, ®s.pt, 0, NULL, NULL); | |
620 | } | |
621 | EXPORT_SYMBOL(kernel_thread); | |
622 | ||
0dc865fe AM |
623 | diff -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 |
644 | diff -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 |
671 | diff -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 |
682 | diff -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, ®s, 0, NULL, | |
690 | - NULL); | |
691 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
692 | + 0, ®s, 0, NULL, NULL); | |
693 | } | |
694 | ||
695 | /* | |
0dc865fe AM |
696 | diff -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 |
711 | diff -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 |
723 | diff -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 |
736 | diff -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 |
756 | diff -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 |
770 | diff -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 |
782 | diff -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 |
794 | diff -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 |
809 | diff -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 |
821 | diff -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 |
833 | diff -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, ®s, 0, NULL, NULL); | |
841 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
842 | + 0, ®s, 0, NULL, NULL); | |
843 | } | |
844 | ||
845 | /* | |
0dc865fe AM |
846 | diff -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 |
867 | diff -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 |
879 | diff -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 |
891 | diff -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 |
903 | diff -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 |
915 | diff -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 |
930 | diff -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 |
943 | diff -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 |
955 | diff -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 |
966 | diff -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 |
978 | diff -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) | |
990 | diff -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 |
1007 | diff -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 |
1033 | diff -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 |
1058 | diff -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 |
1070 | diff -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 |
1081 | diff -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 |
1092 | diff -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 |
1104 | diff -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 |
1116 | diff -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 |
1131 | diff -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 |
1143 | diff -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 |
1158 | diff -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 |
1169 | diff -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 |
1182 | diff -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 |
1194 | diff -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 |
1205 | diff -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 |
1217 | diff -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 |
1232 | diff -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 |
1245 | diff -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 |
1257 | diff -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 |
1269 | diff -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, ®s, 0, NULL, NULL); | |
1292 | } | |
1293 | ||
0dc865fe AM |
1294 | diff -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 |
1319 | diff -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 |
1331 | diff -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 |
1344 | diff -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 |
1356 | diff -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 |
1367 | diff -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 | ®s, 0, NULL, NULL); | |
1387 | } | |
1388 | ||
0dc865fe AM |
1389 | diff -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 |
1400 | diff -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 |
1413 | diff -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 | - ®s, 0, NULL, NULL); | |
1422 | + return do_fork(flags | CLONE_VM | CLONE_UNTRACED | CLONE_KTHREAD, | |
1423 | + 0, ®s, 0, NULL, NULL); | |
1424 | } | |
1425 | ||
1426 | /* | |
0dc865fe AM |
1427 | diff -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 |
1449 | diff -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 |
1461 | diff -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 |
1474 | diff -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 |
1496 | diff -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 |
1508 | diff -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 |
1521 | diff -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 |
1534 | diff -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 |
1546 | diff -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 |
1557 | diff -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 |
1570 | diff -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 |
1592 | diff -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 |
1604 | diff -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 |
1625 | diff -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 |
1638 | diff -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 |
1651 | diff -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 |
1672 | diff -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 |
1684 | diff -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 |
1697 | diff -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 |
1709 | diff -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 |
1721 | diff -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 |
1742 | diff -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 |
1753 | diff -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 |
1766 | diff -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 |
1778 | diff -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> | |
1789 | diff -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 |
1801 | diff -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" | |
1813 | diff -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 |
1837 | diff -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 |
1914 | diff -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 |
1941 | diff -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 |