| Home » Mailing lists » Devel » Fwd: [PATCH] pidspace is_init() Goto Forum:
	| 
		
			| Fwd: [PATCH] pidspace is_init() [message #4908] | Tue, 01 August 2006 17:28  |  
			| 
				
				
					|  Sukadev Bhattiprolu Messages: 413
 Registered: August 2006
 | Senior Member |  |  |  
	| CCing Vserver and OpenVz lists. 
 BTW, can we add these two lists to the lxc-devel list ?
 
 ----- Forwarded message from Sukadev Bhattiprolu <sukadev@us.ibm.com> -----
 
 | Date: Tue, 1 Aug 2006 09:41:26 -0700
 | From: Sukadev Bhattiprolu <sukadev@us.ibm.com>
 | To: Linux Containers on Source Forge <lxc-devel@lists.sourceforge.net>,
 | 	ebiederm@xmission.com
 | Cc: haveblue@us.ibm.com, clg@fr.ibm.com, serue@us.ibm.com,
 | 	sukadev@us.ibm.com
 | Subject: [PATCH] pidspace is_init()
 |
 | Eric,
 |
 | This is an updated version of your is_init() patch.
 | (http://lkml.org/lkml/2006/2/6/280). It applies cleanly to 2.6.18-rc2
 | and replaces a few more instances of ->pid == 1 with is_init().
 |
 | Further, is_init() checks pid (for now) and thus removes dependency on
 | your other patches.
 |
 | Please review and let me know if I can send it out to LKML.
 |
 | Couple of questions:
 |
 | 	Are there cases where child_reaper is not pid = 1. Should the
 | 	"tsk == child_reaper" check in do_exit() be replaced with is_init() ?
 |
 | 	Looks like, we would need a similar, is_idle() wrapper for "pid==0"
 | 	checks - although the name is_idle_task() maybe more intuitive. If
 | 	so, should we rename is_init() to is_init_task() ?
 |
 |
 | Eric's original description:
 |
 | 	There are a lot of places in the kernel where we test for init
 | 	because we give it special properties.  Most  significantly init
 | 	must not die.  This results in code all over the kernel test
 | 	->pid == 1.
 |
 | 	Introduce is_init to capture this case.
 |
 | 	With multiple pid spaces for all of the cases affected we are
 | 	looking for only the first process on the system, not some other
 | 	process that has pid == 1.
 |
 | Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
 | Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com>
 | Cc: Dave Hansen <haveblue@us.ibm.com>
 | Cc: Serge Hallyn <serue@us.ibm.com>
 | Cc: Cedric Le Goater <clg@fr.ibm.com>
 | Cc: lxc-devel@lists.sourceforge.net
 |
 |
 |  arch/alpha/mm/fault.c                |    2 +-
 |  arch/arm/mm/fault.c                  |    2 +-
 |  arch/arm26/mm/fault.c                |    2 +-
 |  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/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/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                |   10 ++++++++++
 |  kernel/capability.c                  |    2 +-
 |  kernel/cpuset.c                      |    2 +-
 |  kernel/exit.c                        |    2 +-
 |  kernel/kexec.c                       |    2 +-
 |  kernel/ptrace.c                      |    1 +
 |  kernel/sysctl.c                      |    2 +-
 |  mm/oom_kill.c                        |    6 +++---
 |  security/commoncap.c                 |    2 +-
 |  security/seclvl.c                    |    9 +++++----
 |  30 files changed, 48 insertions(+), 36 deletions(-)
 |
 | Index: linux-2.6.18-rc2c/arch/alpha/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/alpha/mm/fault.c	2006-07-28 09:20:03.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/alpha/mm/fault.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -193,7 +193,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 (current->pid == 1) {
 | +	if (is_init(current)) {
 |  		yield();
 |  		down_read(&mm->mmap_sem);
 |  		goto survive;
 | Index: linux-2.6.18-rc2c/arch/arm/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/arm/mm/fault.c	2006-07-28 09:20:04.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/arm/mm/fault.c	2006-07-31 17:53:40.000000000 -0700
 | @@ -197,7 +197,7 @@ survive:
 |  		return fault;
 |  	}
 |
 | -	if (tsk->pid != 1)
 | +	if (!is_init(tsk))
 |  		goto out;
 |
 |  	/*
 | Index: linux-2.6.18-rc2c/arch/arm26/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/arm26/mm/fault.c	2006-07-28 09:19:59.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/arm26/mm/fault.c	2006-07-31 22:48:32.000000000 -0700
 | @@ -185,7 +185,7 @@ survive:
 |  	}
 |
 |  	fault = -3; /* out of memory */
 | -	if (tsk->pid != 1)
 | +	if (!is_init(tsk))
 |  		goto out;
 |
 |  	/*
 | Index: linux-2.6.18-rc2c/arch/i386/lib/usercopy.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/i386/lib/usercopy.c	2006-07-28 09:19:49.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/i386/lib/usercopy.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -739,7 +739,7 @@ survive:
 |  			retval = get_user_pages(current, current->mm,
 |  					(unsigned long )to, 1, 1, 0, &pg, NULL);
 |
 | -			if (retval == -ENOMEM && current->pid == 1) {
 | +			if (retval == -ENOMEM && is_init(current)) {
 |  				up_read(¤t->mm->mmap_sem);
 |  				blk_congestion_wait(WRITE, HZ/50);
 |  				goto survive;
 | Index: linux-2.6.18-rc2c/arch/i386/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/i386/mm/fault.c	2006-07-28 09:19:49.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/i386/mm/fault.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -598,7 +598,7 @@ no_context:
 |   */
 |  out_of_memory:
 |  	up_read(&mm->mmap_sem);
 | -	if (tsk->pid == 1) {
 | +	if (is_init(tsk)) {
 |  		yield();
 |  		down_read(&mm->mmap_sem);
 |  		goto survive;
 | Index: linux-2.6.18-rc2c/arch/ia64/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/ia64/mm/fault.c	2006-07-28 09:20:02.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/ia64/mm/fault.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -278,7 +278,7 @@ ia64_do_page_fault (unsigned long addres
 |
 |    out_of_memory:
 |  	up_read(&mm->mmap_sem);
 | -	if (current->pid == 1) {
 | +	if (is_init(current)) {
 |  		yield();
 |  		down_read(&mm->mmap_sem);
 |  		goto survive;
 | Index: linux-2.6.18-rc2c/arch/m32r/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/m32r/mm/fault.c	2006-07-28 09:20:09.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/m32r/mm/fault.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -299,7 +299,7 @@ no_context:
 |   */
 |  out_of_memory:
 |  	up_read(&mm->mmap_sem);
 | -	if (tsk->pid == 1) {
 | +	if (is_init(tsk)) {
 |  		yield();
 |  		down_read(&mm->mmap_sem);
 |  		goto survive;
 | Index: linux-2.6.18-rc2c/arch/m68k/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/m68k/mm/fault.c	2006-07-28 09:20:00.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/m68k/mm/fault.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -181,7 +181,7 @@ good_area:
 |   */
 |  out_of_memory:
 |  	up_read(&mm->mmap_sem);
 | -	if (current->pid == 1) {
 | +	if (is_init(current)) {
 |  		yield();
 |  		down_read(&mm->mmap_sem);
 |  		goto survive;
 | Index: linux-2.6.18-rc2c/arch/mips/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/mips/mm/fault.c	2006-07-28 09:19:54.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/mips/mm/fault.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -171,7 +171,7 @@ no_context:
 |   */
 |  out_of_memory:
 |  	up_read(&mm->mmap_sem);
 | -	if (tsk->pid == 1) {
 | +	if (is_init(tsk)) {
 |  		yield();
 |  		down_read(&mm->mmap_sem);
 |  		goto survive;
 | Index: linux-2.6.18-rc2c/arch/powerpc/mm/fault.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/powerpc/mm/fault.c	2006-07-28 09:20:10.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/powerpc/mm/fault.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -386,7 +386,7 @@ bad_area_nosemaphore:
 |   */
 |  out_of_memory:
 |  	up_read(&mm->mmap_sem);
 | -	if (current->pid == 1) {
 | +	if (is_init(current)) {
 |  		yield();
 |  		down_read(&mm->mmap_sem);
 |  		goto survive;
 | Index: linux-2.6.18-rc2c/arch/powerpc/platforms/pseries/ras.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/powerpc/platforms/pseries/ras.c	2006-07-28 09:20:10.000000000 -0700
 | +++ linux-2.6.18-rc2c/arch/powerpc/platforms/pseries/ras.c	2006-07-28 09:35:37.000000000 -0700
 | @@ -337,7 +337,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 || current->pid == 1)) {
 | +		   !(current->pid == 0 || is_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: linux-2.6.18-rc2c/arch/ppc/kernel/traps.c
 |  ============================================================ =======
 | --- linux-2.6.18-rc2c.orig/arch/ppc/kernel/traps.c	2006-07-28 09:19:52.000000000 -070
...
 
 
 |  
	|  |  |  
	|  |  
	| 
		
			| Re:  Fwd: [PATCH] pidspace is_init() [message #4961 is a reply to message #4909] | Fri, 04 August 2006 20:17  |  
			| 
				
				
					|  Sukadev Bhattiprolu Messages: 413
 Registered: August 2006
 | Senior Member |  |  |  
	| Hi, 
 I added Vserver and Openvz lists to lxcdevel and sent a test mail.
 Can you please let me know if you don't receive the mail in say 24
 hours ?
 
 Suka
 
 Kir Kolyshkin [kir@openvz.org] wrote:
 | Sukadev Bhattiprolu wrote:
 | >CCing Vserver and OpenVz lists.
 | >
 | >BTW, can we add these two lists to the lxc-devel list ?
 | Sure, feel free.
 |  
	|  |  | 
 
 
 Current Time: Fri Oct 31 07:49:14 GMT 2025 
 Total time taken to generate the page: 0.21852 seconds |