[packages/kernel/LINUX_4_1] - rel 3; previous fix was buggy (oops at vserver guest stop)

arekm arekm at pld-linux.org
Sat Jan 30 09:52:20 CET 2016


commit 9d49b35cb1591ff860012ef5c21674498975e35b
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sat Jan 30 09:52:14 2016 +0100

    - rel 3; previous fix was buggy (oops at vserver guest stop)

 kernel-vserver-fixes.patch | 29 +++++++++++++++++++++++++++++
 kernel.spec                |  2 +-
 2 files changed, 30 insertions(+), 1 deletion(-)
---
diff --git a/kernel.spec b/kernel.spec
index 3bc7226..ae0a680 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -69,7 +69,7 @@
 %define		have_pcmcia	0
 %endif
 
-%define		rel		2
+%define		rel		3
 %define		basever		4.1
 %define		postver		.16
 
diff --git a/kernel-vserver-fixes.patch b/kernel-vserver-fixes.patch
index f18f26d..d4f1173 100644
--- a/kernel-vserver-fixes.patch
+++ b/kernel-vserver-fixes.patch
@@ -52,3 +52,32 @@
  			reparent_leader(father, p, dead);
  	}
  	list_splice_tail_init(&father->children, &reaper->children);
+diff -Nurp linux-4.1.3-vs2.3.8.2.fakeinit04/kernel/exit.c linux-4.1.3-vs2.3.8.2.fakeinit05/kernel/exit.c
+--- linux-4.1.3-vs2.3.8.2.fakeinit04/kernel/exit.c	2016-01-29 23:56:25.077386945 +0100
++++ linux-4.1.3-vs2.3.8.2.fakeinit05/kernel/exit.c	2016-01-30 00:12:30.693073246 +0100
+@@ -579,8 +579,10 @@ static void forget_original_parent(struc
+ 		return;
+ 
+ 	reaper = find_new_reaper(father, reaper);
+-	list_for_each_entry(p, &father->children, sibling) {
+-		struct task_struct *this_reaper = reaper;
++	for (p = list_first_entry(&father->children, struct task_struct, sibling);
++	     &p->sibling != &father->children;
++	     ) {
++		struct task_struct *next, *this_reaper = reaper;
+ 		if (p == reaper)
+ 			this_reaper = task_active_pid_ns(reaper)->child_reaper;
+ 		for_each_thread(p, t) {
+@@ -598,8 +600,11 @@ static void forget_original_parent(struc
+ 		 */
+ 		if (!same_thread_group(this_reaper, father))
+ 			reparent_leader(father, p, dead);
++		next = list_next_entry(p, sibling);
++		list_add(&p->sibling, &this_reaper->children);
++		p = next;
+ 	}
+-	list_splice_tail_init(&father->children, &reaper->children);
++	INIT_LIST_HEAD(&father->children);
+ }
+ 
+ /*
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/9d49b35cb1591ff860012ef5c21674498975e35b



More information about the pld-cvs-commit mailing list