commit 9d49b35cb1591ff860012ef5c21674498975e35b
Author: Arkadiusz Miƛkiewicz <[email protected]>
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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to