mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
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.
[[email protected]: fix comment]
[[email protected]: Use is_global_init() in arch/m32r/mm/fault.c]
[[email protected]: kernel/pid.c: remove unused exports]
[[email protected]: Fix capability.c to work with threaded init]
Signed-off-by: Serge E. Hallyn <[email protected]>
Signed-off-by: Sukadev Bhattiprolu <[email protected]>
Acked-by: Pavel Emelianov <[email protected]>
Cc: Eric W. Biederman <[email protected]>
Cc: Cedric Le Goater <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Herbert Poetzel <[email protected]>
Cc: Kirill Korotaev <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
3743ca05ff
commit
b460cbc581
32 changed files with 52 additions and 37 deletions
|
|
@ -212,7 +212,7 @@ static struct task_struct *select_bad_process(unsigned long *ppoints)
|
|||
if (!p->mm)
|
||||
continue;
|
||||
/* skip the init task */
|
||||
if (is_init(p))
|
||||
if (is_global_init(p))
|
||||
continue;
|
||||
|
||||
/*
|
||||
|
|
@ -265,7 +265,7 @@ static struct task_struct *select_bad_process(unsigned long *ppoints)
|
|||
*/
|
||||
static void __oom_kill_task(struct task_struct *p, int verbose)
|
||||
{
|
||||
if (is_init(p)) {
|
||||
if (is_global_init(p)) {
|
||||
WARN_ON(1);
|
||||
printk(KERN_WARNING "tried to kill init!\n");
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in a new issue