aboutsummaryrefslogtreecommitdiffstats
path: root/arch/avr32/mm
diff options
context:
space:
mode:
authorSerge E. Hallyn <serue@us.ibm.com>2007-10-19 02:39:52 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-19 14:53:37 -0400
commitb460cbc581a53cc088ceba80608021dd49c63c43 (patch)
tree83c28d0adbc15f4157c77b40fa60c40a71cb8673 /arch/avr32/mm
parent3743ca05ff464b8a9e345c08a6c9ce30485f9805 (diff)
pid namespaces: define is_global_init() and is_container_init()
is_init() is an ambiguous name for the pid==1 check. Split it into is_global_init() and is_container_init(). A cgroup init has it's tsk->pid == 1. A global init also has it's tsk->pid == 1 and it's active pid namespace is the init_pid_ns. But rather than check the active pid namespace, compare the task structure with 'init_pid_ns.child_reaper', which is initialized during boot to the /sbin/init process and never changes. Changelog: 2.6.22-rc4-mm2-pidns1: - Use 'init_pid_ns.child_reaper' to determine if a given task is the global init (/sbin/init) process. This would improve performance and remove dependence on the task_pid(). 2.6.21-mm2-pidns2: - [Sukadev Bhattiprolu] Changed is_container_init() calls in {powerpc, ppc,avr32}/traps.c for the _exception() call to is_global_init(). This way, we kill only the cgroup if the cgroup's init has a bug rather than force a kernel panic. [akpm@linux-foundation.org: fix comment] [sukadev@us.ibm.com: Use is_global_init() in arch/m32r/mm/fault.c] [bunk@stusta.de: kernel/pid.c: remove unused exports] [sukadev@us.ibm.com: Fix capability.c to work with threaded init] Signed-off-by: Serge E. Hallyn <serue@us.ibm.com> Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com> Acked-by: Pavel Emelianov <xemul@openvz.org> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Cedric Le Goater <clg@fr.ibm.com> Cc: Dave Hansen <haveblue@us.ibm.com> Cc: Herbert Poetzel <herbert@13thfloor.at> Cc: Kirill Korotaev <dev@sw.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/avr32/mm')
-rw-r--r--arch/avr32/mm/fault.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
index 11472f8701bd..6560cb18b4e3 100644
--- a/arch/avr32/mm/fault.c
+++ b/arch/avr32/mm/fault.c
@@ -160,7 +160,7 @@ bad_area:
160 if (exception_trace && printk_ratelimit()) 160 if (exception_trace && printk_ratelimit())
161 printk("%s%s[%d]: segfault at %08lx pc %08lx " 161 printk("%s%s[%d]: segfault at %08lx pc %08lx "
162 "sp %08lx ecr %lu\n", 162 "sp %08lx ecr %lu\n",
163 is_init(tsk) ? KERN_EMERG : KERN_INFO, 163 is_global_init(tsk) ? KERN_EMERG : KERN_INFO,
164 tsk->comm, tsk->pid, address, regs->pc, 164 tsk->comm, tsk->pid, address, regs->pc,
165 regs->sp, ecr); 165 regs->sp, ecr);
166 _exception(SIGSEGV, regs, code, address); 166 _exception(SIGSEGV, regs, code, address);
@@ -209,7 +209,7 @@ no_context:
209 */ 209 */
210out_of_memory: 210out_of_memory:
211 up_read(&mm->mmap_sem); 211 up_read(&mm->mmap_sem);
212 if (is_init(current)) { 212 if (is_global_init(current)) {
213 yield(); 213 yield();
214 down_read(&mm->mmap_sem); 214 down_read(&mm->mmap_sem);
215 goto survive; 215 goto survive;
@@ -231,7 +231,7 @@ do_sigbus:
231 if (exception_trace) 231 if (exception_trace)
232 printk("%s%s[%d]: bus error at %08lx pc %08lx " 232 printk("%s%s[%d]: bus error at %08lx pc %08lx "
233 "sp %08lx ecr %lu\n", 233 "sp %08lx ecr %lu\n",
234 is_init(tsk) ? KERN_EMERG : KERN_INFO, 234 is_global_init(tsk) ? KERN_EMERG : KERN_INFO,
235 tsk->comm, tsk->pid, address, regs->pc, 235 tsk->comm, tsk->pid, address, regs->pc,
236 regs->sp, ecr); 236 regs->sp, ecr);
237 237