[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