PERFORCE change 113660 for review

Roman Divacky rdivacky at FreeBSD.org
Mon Jan 29 09:15:53 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=113660

Change 113660 by rdivacky at rdivacky_witten on 2007/01/29 09:15:39

	Fix LOR that occurs because we acquired proctree_lock while holding
	emuldata lock.

Affected files ...

.. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#32 edit
.. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#26 edit

Differences ...

==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#32 (text+ko) ====

@@ -613,6 +613,14 @@
 	error = fork1(td, ff, 0, &p2);
 	if (error)
 		return (error);
+
+	if (args->flags & (CLONE_PARENT|CLONE_THREAD)) {
+	   	sx_xlock(&proctree_lock);
+		PROC_LOCK(p2);
+		proc_reparent(p2, td->td_proc->p_pptr);
+		PROC_UNLOCK(p2);
+		sx_xunlock(&proctree_lock);
+	}
 	
 	/* create the emuldata */
 	error = linux_proc_init(td, p2->p_pid, args->flags);
@@ -632,14 +640,6 @@
 		}
 	}
 
-	if (args->flags & (CLONE_PARENT|CLONE_THREAD)) {
-	   	sx_xlock(&proctree_lock);
-		PROC_LOCK(p2);
-		proc_reparent(p2, td->td_proc->p_pptr);
-		PROC_UNLOCK(p2);
-		sx_xunlock(&proctree_lock);
-	}
-
 	if (args->flags & CLONE_THREAD) {
 #ifdef notyet
 	   	PROC_LOCK(p2);

==== //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#26 (text+ko) ====

@@ -426,6 +426,14 @@
 	error = fork1(td, ff, 0, &p2);
 	if (error)
 		return (error);
+
+	if (args->flags & (CLONE_PARENT|CLONE_THREAD)) {
+	   	sx_xlock(&proctree_lock);
+		PROC_LOCK(p2);
+		proc_reparent(p2, td->td_proc->p_pptr);
+		PROC_UNLOCK(p2);
+		sx_xunlock(&proctree_lock);
+	}
 	
 	/* create the emuldata */
 	error = linux_proc_init(td, p2->p_pid, args->flags);
@@ -445,14 +453,6 @@
 		}
 	}
 
-	if (args->flags & (CLONE_PARENT|CLONE_THREAD)) {
-	   	sx_xlock(&proctree_lock);
-		PROC_LOCK(p2);
-		proc_reparent(p2, td->td_proc->p_pptr);
-		PROC_UNLOCK(p2);
-		sx_xunlock(&proctree_lock);
-	}
-
 	if (args->flags & CLONE_THREAD) {
 #ifdef notyet
 	   	PROC_LOCK(p2);


More information about the p4-projects mailing list