[SSI] openssi/kernel/include/linux config.h, 1.29, 1.30 dpvproc.h, 1.19, 1.20 vproc.h, 1.27, 1.28

Roger Tsang <[email protected]>
Newsgroups gmane.linux.cluster.ssic.cvs
Message-ID <[email protected]>
Update of /cvsroot/ssic-linux/openssi/kernel/include/linux
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv23888/include/linux

Modified Files:
      Tag: OPENSSI-FC
	config.h dpvproc.h vproc.h 
Log Message:
VPROC:
- Fix select_bad_process() NULL p_vproc pointer dereference.
- Fix de_thread() related issues:
  - Fix de_thread() calling VPOP_RECLAIM_CHILD() while holding spin_lock(task->p
roc_lock). Code path might sleep.
  - Fix NULL p_vproc pointer dereference when thread group leader is exiting, ha
s PF_FORKNOEXEC flag, and has lost race with de_thread(). Affects exit_notify(),
 forget_original_parent(), and will_become_orphaned_pgrp(). When p_vproc is NULL
 the exiting process reaps itself.
  - Fix dpvproc_nocldwait_async_handler() NULL pointer dereference due to failed
 lookup for vproc of new parent when lost race with de_thread(). (#ifdef RELEASE
_TASK_LEADER_GONE__VPROC_FIX)
  - New PVPOP_SWITCH_PID() to switch VProc PID of process doing de_thread().
  - New PV_DETHREAD_REAP flag is set during de_thread() to indicate to child rea
per to reap thread group leader without delay.
  - Fix oops in do_notify_resume() path due to NULL pointer dereference. p_vproc
 is NULL after bad fork.

VPROC (#ifdef VPROC_RELEASE__REFCNT_RACE_FIX):
- Fix extra VPROC_RELE() on PVPOP_RMV_PGRP_LIST() -ESRCH error.
- Fix PVPOP_REAP() extra dpvproc_remove_pgrp_leader_member_care() on PVPOP_RMV_P
GRP_LIST() -EBUSY error; was typo in if-test.
- PVPOP_REAP() no longer does async PVPOP_RMV_PGRP_LIST(); now sync. Don't see h
ow reaping parent can hold PGRP LOCK in PVPOP_REAP() path.
- Fix exit_vproc() did not decrement vproc reference for process group leader on
 member node. This is in do_fork() error path.

VPROC (#ifdef VPROC_CONTINUE):
- Fix dpvproc_nocldwait_async_handler() deadlock on PVPOP_REAP() -EBUSY due to d
elay_group_leader(). PV_REAPER_RETRY flag is set and group leader is re-inserted
 into the queue so that the remaining threads in thread group can be reaped by t
his handler to remove the delay_group_leader() condition.
- Regression:
  - Fix pproc_reap() should succeed, but returns -EBUSY when process is a thread
 group leader in non-empty thread group and is already in EXIT_DEAD state.


Index: config.h
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/include/linux/config.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- config.h	17 Nov 2009 06:09:02 -0000	1.29
+++ config.h	17 Dec 2009 05:46:50 -0000	1.30
@@ -104,6 +104,11 @@
 #  define IPC_SHM_LOCK_DEST_FIX
 #endif
 
+#define SVRCFSTOK_REMOVE_NOTIFY_SET_NOTOKENCACHE
+#ifdef SVRCFSTOK_REMOVE_NOTIFY_SET_NOTOKENCACHE
+#  define SVRCFSTOK_SCT_FLAGS_NOLOCK
+#endif
+
 /*
  * Experimental
  */
@@ -376,12 +381,6 @@
  * got created?
  */
 /*
-#define SVRCFSTOK_REMOVE_NOTIFY_SET_NOTOKENCACHE
-#ifdef SVRCFSTOK_REMOVE_NOTIFY_SET_NOTOKENCACHE
-#  define SVRCFSTOK_SCT_FLAGS_NOLOCK
-#endif
-*/
-/*
 #ifdef CFS_PAGEVEC
 #  define CFS_PAGEVEC_PAGE_ORDER
 #endif

Index: dpvproc.h
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/include/linux/dpvproc.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- dpvproc.h	17 Nov 2009 06:09:02 -0000	1.19
+++ dpvproc.h	17 Dec 2009 05:46:50 -0000	1.20
@@ -235,6 +235,14 @@
 #define PV_IS_TGID		0x00800000	/* thread group leader */
 #define PV_STRESS_MIG		0x01000000	/* migrate on every syscall */
 #define PV_STRESS_DONE		0x02000000	/* migrate on already done */
+#ifdef VPROC_CONTINUE
+#define PV_REAPER_RETRY		0x04000000	/* Child reaper is retrying due
+						   to EBUSY on previous attempt.
+						   Process is already removed
+						   from child-sibling-list. */
+#define PV_DETHREAD_REAP	0x08000000	/* Reap process immediately due
+						 * to Linux de_thread(). */
+#endif
 
 #define MAGIC_STRESS_NODE	0x00fe7b1d
 /*
@@ -898,6 +906,9 @@
 		IN long buf,		/* data for ptrace cmd */
 		INOUT int *arch_flags,	/* arch specific data */
 		OUT long *retval);	/* return value */
+extern void pvpop_switch_pid(
+	struct vproc *v,	/* vproc of target process */
+	pid_t pid);		/* new PID to assign target process */
 
 /*
  * Definitions for pvproc operations
@@ -1000,6 +1011,10 @@
 	    ("0x%x, req=%d, addr=0x%x, data=0x%x arch_flags=%d retval=0x%lx", \
 		v, _req, _addr, _data, *(_arch_flags), *(_retval)))
 
+#define PVPOP_SWITCH_PID(v, _pid) \
+	_PVPOP_(pvpop_switch_pid, v, (v, _pid), \
+	    ("0x%x, pid=%d", v, _pid))
+
 #define PVPOP_TERMINAL_SIGPGRP(v, _spid, _sig, _pinfo, _flag) \
 	_PVPOP_(pvpop_terminal_sigpgrp, v, (v, _spid, _sig, _pinfo, _flag), \
 	    ("0x%x, spid= %d, sig=%d, pinfo=0x%x, flag=0x%x", \

Index: vproc.h
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/include/linux/vproc.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- vproc.h	27 Oct 2009 03:18:30 -0000	1.27
+++ vproc.h	17 Dec 2009 05:46:50 -0000	1.28
@@ -630,6 +630,10 @@
 #ifdef VPROC_VPROC_WNOTHREAD
 #define VPROC_WNOTHREAD		0x200	/* Don't wait on children of other threads in this group */
 #endif
+#ifdef VPROC_CONTINUE
+#define VPROC_WDETHREAD		0x400	/* Reaping due to Linux de_thread()
+					 * don't wait for thread group. */
+#endif
 
 /*
  * These are why code values accepted by VPOP_EXIT.


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.