OpenVZ Forum


Home » Mailing lists » Devel » [RFC][PATCH 0/16] Enable cloning of pid namespace
Re: [RFC][PATCH 06/16] Define is_global_init() [message #18645 is a reply to message #18615] Thu, 24 May 2007 15:27 Go to previous messageGo to previous message
serue is currently offline  serue
Messages: 750
Registered: February 2006
Senior Member
Quoting sukadev@us.ibm.com (sukadev@us.ibm.com):
> 
> Subject: Define is_global_init()
> 
> From: Serge E. Hallyn <serue@us.ibm.com>
> 
> 
> is_init() is an ambiguous name for the pid==1 check.  Split it into
> is_global_init() and is_container_init().
> 
> A container 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.
> 
> Changelog:
> 
> 	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 container if the container's init has a
> 	  bug rather than force a kernel panic.
> 
> Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>
> Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com>
> ---
>  arch/alpha/mm/fault.c                |    2 +-
>  arch/arm/mm/fault.c                  |    2 +-
>  arch/arm26/mm/fault.c                |    2 +-
>  arch/avr32/kernel/traps.c            |    2 +-
>  arch/avr32/mm/fault.c                |    6 +++---
>  arch/i386/lib/usercopy.c             |    2 +-
>  arch/i386/mm/fault.c                 |    2 +-
>  arch/ia64/mm/fault.c                 |    2 +-
>  arch/m32r/mm/fault.c                 |    2 +-
>  arch/m68k/mm/fault.c                 |    2 +-
>  arch/mips/mm/fault.c                 |    2 +-
>  arch/powerpc/kernel/traps.c          |    2 +-
>  arch/powerpc/mm/fault.c              |    2 +-
>  arch/powerpc/platforms/pseries/ras.c |    2 +-
>  arch/ppc/kernel/traps.c              |    2 +-
>  arch/ppc/mm/fault.c                  |    2 +-
>  arch/s390/lib/uaccess_pt.c           |    2 +-
>  arch/s390/mm/fault.c                 |    2 +-
>  arch/sh/mm/fault.c                   |    2 +-
>  arch/sh64/mm/fault.c                 |    6 +++---
>  arch/um/kernel/trap.c                |    2 +-
>  arch/x86_64/mm/fault.c               |    4 ++--
>  arch/xtensa/mm/fault.c               |    2 +-
>  drivers/char/sysrq.c                 |    2 +-
>  include/linux/sched.h                |   13 +++----------
>  kernel/capability.c                  |    3 ++-
>  kernel/exit.c                        |    2 +-
>  kernel/kexec.c                       |    2 +-
>  kernel/pid.c                         |   21 +++++++++++++++++++++
>  kernel/sysctl.c                      |    2 +-
>  mm/oom_kill.c                        |    4 ++--
>  security/commoncap.c                 |    2 +-
>  32 files changed, 61 insertions(+), 46 deletions(-)
> 
> Index: lx26-21-mm2/arch/alpha/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/alpha/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/alpha/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -192,7 +192,7 @@ do_page_fault(unsigned long address, uns
>  	/* We ran out of memory, or some other thing happened to us that
>  	   made us unable to handle the page fault gracefully.  */
>   out_of_memory:
> -	if (is_init(current)) {
> +	if (is_global_init(current)) {
>  		yield();
>  		down_read(&mm->mmap_sem);
>  		goto survive;
> Index: lx26-21-mm2/arch/arm/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/arm/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/arm/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -197,7 +197,7 @@ survive:
>  		return fault;
>  	}
> 
> -	if (!is_init(tsk))
> +	if (!is_global_init(tsk))
>  		goto out;
> 
>  	/*
> Index: lx26-21-mm2/arch/arm26/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/arm26/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/arm26/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -185,7 +185,7 @@ survive:
>  	}
> 
>  	fault = -3; /* out of memory */
> -	if (!is_init(tsk))
> +	if (!is_global_init(tsk))
>  		goto out;
> 
>  	/*
> Index: lx26-21-mm2/arch/i386/lib/usercopy.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/i386/lib/usercopy.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/i386/lib/usercopy.c	2007-05-22 16:59:46.000000000 -0700
> @@ -748,7 +748,7 @@ survive:
>  			retval = get_user_pages(current, current->mm,
>  					(unsigned long )to, 1, 1, 0, &pg, NULL);
> 
> -			if (retval == -ENOMEM && is_init(current)) {
> +			if (retval == -ENOMEM && is_global_init(current)) {
>  				up_read(&current->mm->mmap_sem);
>  				congestion_wait(WRITE, HZ/50);
>  				goto survive;
> Index: lx26-21-mm2/arch/i386/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/i386/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/i386/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -576,7 +576,7 @@ no_context:
>   */
>  out_of_memory:
>  	up_read(&mm->mmap_sem);
> -	if (is_init(tsk)) {
> +	if (is_global_init(tsk)) {
>  		yield();
>  		down_read(&mm->mmap_sem);
>  		goto survive;
> Index: lx26-21-mm2/arch/ia64/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/ia64/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/ia64/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -279,7 +279,7 @@ ia64_do_page_fault (unsigned long addres
> 
>    out_of_memory:
>  	up_read(&mm->mmap_sem);
> -	if (is_init(current)) {
> +	if (is_global_init(current)) {
>  		yield();
>  		down_read(&mm->mmap_sem);
>  		goto survive;
> Index: lx26-21-mm2/arch/m32r/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/m32r/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/m32r/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -272,7 +272,7 @@ no_context:
>   */
>  out_of_memory:
>  	up_read(&mm->mmap_sem);
> -	if (is_init(tsk)) {
> +	if (is_global_init(tsk)) {
>  		yield();
>  		down_read(&mm->mmap_sem);
>  		goto survive;
> Index: lx26-21-mm2/arch/m68k/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/m68k/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/m68k/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -181,7 +181,7 @@ good_area:
>   */
>  out_of_memory:
>  	up_read(&mm->mmap_sem);
> -	if (is_init(current)) {
> +	if (is_global_init(current)) {
>  		yield();
>  		down_read(&mm->mmap_sem);
>  		goto survive;
> Index: lx26-21-mm2/arch/mips/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/mips/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/mips/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -174,7 +174,7 @@ no_context:
>   */
>  out_of_memory:
>  	up_read(&mm->mmap_sem);
> -	if (is_init(tsk)) {
> +	if (is_global_init(tsk)) {
>  		yield();
>  		down_read(&mm->mmap_sem);
>  		goto survive;
> Index: lx26-21-mm2/arch/powerpc/kernel/traps.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/powerpc/kernel/traps.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/powerpc/kernel/traps.c	2007-05-22 16:59:46.000000000 -0700
> @@ -190,7 +190,7 @@ void _exception(int signr, struct pt_reg
>  	 * generate the same exception over and over again and we get
>  	 * nowhere.  Better to kill it and let the kernel panic.
>  	 */
> -	if (is_init(current)) {
> +	if (is_global_init(current)) {
>  		__sighandler_t handler;
> 
>  		spin_lock_irq(&current->sighand->siglock);
> Index: lx26-21-mm2/arch/powerpc/mm/fault.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/powerpc/mm/fault.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/powerpc/mm/fault.c	2007-05-22 16:59:46.000000000 -0700
> @@ -374,7 +374,7 @@ bad_area_nosemaphore:
>   */
>  out_of_memory:
>  	up_read(&mm->mmap_sem);
> -	if (is_init(current)) {
> +	if (is_global_init(current)) {
>  		yield();
>  		down_read(&mm->mmap_sem);
>  		goto survive;
> Index: lx26-21-mm2/arch/powerpc/platforms/pseries/ras.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/powerpc/platforms/pseries/ras.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/powerpc/platforms/pseries/ras.c	2007-05-22 16:59:46.000000000 -0700
> @@ -332,7 +332,7 @@ static int recover_mce(struct pt_regs *r
>  		   err->disposition == RTAS_DISP_NOT_RECOVERED &&
>  		   err->target == RTAS_TARGET_MEMORY &&
>  		   err->type == RTAS_TYPE_ECC_UNCORR &&
> -		   !(current->pid == 0 || is_init(current))) {
> +		   !(current->pid == 0 || is_global_init(current))) {
>  		/* Kill off a user process with an ECC error */
>  		printk(KERN_ERR "MCE: uncorrectable ecc error for pid %d\n",
>  		       current->pid);
> Index: lx26-21-mm2/arch/ppc/kernel/traps.c
> ===================================================================
> --- lx26-21-mm2.orig/arch/ppc/kernel/traps.c	2007-05-22 16:58:38.000000000 -0700
> +++ lx26-21-mm2/arch/ppc/kernel/t
...

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: [PATCH 0/13] Pid namespaces (OpenVZ view)
Next Topic: [PATCH 05/10] Containers(V10): Add container_clone() interface
Goto Forum:
  


Current Time: Tue Oct 28 16:40:02 GMT 2025

Total time taken to generate the page: 0.25689 seconds