summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenedikt Boehm <hollow@gentoo.org>2007-02-01 00:23:55 +0000
committerBenedikt Boehm <hollow@gentoo.org>2007-02-01 00:23:55 +0000
commitb5eb8a453d3f05a34cf08c46b514fb3d76424c40 (patch)
treea3e643947a8f177f0c94fcdf02ffe525e8dfd38f /vserver-sources/old/2.2.0_rc8/4411_delta-vkill-fix02.patch
parentadd 2.2.0_rc8 (diff)
downloadmisc-b5eb8a453d3f05a34cf08c46b514fb3d76424c40.tar.gz
misc-b5eb8a453d3f05a34cf08c46b514fb3d76424c40.tar.bz2
misc-b5eb8a453d3f05a34cf08c46b514fb3d76424c40.zip
version bump
svn path=/; revision=538
Diffstat (limited to 'vserver-sources/old/2.2.0_rc8/4411_delta-vkill-fix02.patch')
-rw-r--r--vserver-sources/old/2.2.0_rc8/4411_delta-vkill-fix02.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/vserver-sources/old/2.2.0_rc8/4411_delta-vkill-fix02.patch b/vserver-sources/old/2.2.0_rc8/4411_delta-vkill-fix02.patch
new file mode 100644
index 0000000..2fb4641
--- /dev/null
+++ b/vserver-sources/old/2.2.0_rc8/4411_delta-vkill-fix02.patch
@@ -0,0 +1,71 @@
+diff -NurpP --minimal linux-2.6.19.2-vs2.2.0-rc8/kernel/vserver/signal.c linux-2.6.19.2-vs2.2.0-rc8.1/kernel/vserver/signal.c
+--- linux-2.6.19.2-vs2.2.0-rc8/kernel/vserver/signal.c 2006-11-08 04:57:45 +0100
++++ linux-2.6.19.2-vs2.2.0-rc8.1/kernel/vserver/signal.c 2007-01-18 20:31:22 +0100
+@@ -3,10 +3,11 @@
+ *
+ * Virtual Server: Signal Support
+ *
+- * Copyright (C) 2003-2006 Herbert P÷tzl
++ * Copyright (C) 2003-2007 Herbert P÷tzl
+ *
+ * V0.01 broken out from vcontext V0.05
+ * V0.02 changed vcmds to vxi arg
++ * V0.03 adjusted siginfo for kill
+ *
+ */
+
+@@ -23,7 +24,7 @@ int vx_info_kill(struct vx_info *vxi, in
+ {
+ int retval, count=0;
+ struct task_struct *p;
+- unsigned long priv = 0;
++ struct siginfo *sip = SEND_SIG_PRIV;
+
+ retval = -ESRCH;
+ vxdprintk(VXD_CBIT(misc, 4),
+@@ -32,7 +33,7 @@ int vx_info_kill(struct vx_info *vxi, in
+ read_lock(&tasklist_lock);
+ switch (pid) {
+ case 0:
+- priv = 1;
++ sip = SEND_SIG_FORCED;
+ case -1:
+ for_each_process(p) {
+ int err = 0;
+@@ -41,7 +42,7 @@ int vx_info_kill(struct vx_info *vxi, in
+ (pid && vxi->vx_initpid == p->pid))
+ continue;
+
+- err = group_send_sig_info(sig, (void*)priv, p);
++ err = group_send_sig_info(sig, sip, p);
+ ++count;
+ if (err != -EPERM)
+ retval = err;
+@@ -56,22 +57,22 @@ int vx_info_kill(struct vx_info *vxi, in
+ /* ... as long as there are tasks left */
+ (atomic_read(&vxi->vx_tasks) > 1))
+ sig = SIGINT;
+- priv = 1;
++ else
++ sip = SEND_SIG_FORCED;
+ }
+ /* fallthrough */
+ default:
+ p = find_task_by_real_pid(pid);
+ if (p) {
+ if (vx_task_xid(p) == vxi->vx_id)
+- retval = group_send_sig_info(sig,
+- (void*)priv, p);
++ retval = group_send_sig_info(sig, sip, p);
+ }
+ break;
+ }
+ read_unlock(&tasklist_lock);
+ vxdprintk(VXD_CBIT(misc, 4),
+- "vx_info_kill(%p[#%d],%d,%d) = %d",
+- vxi, vxi->vx_id, pid, sig, retval);
++ "vx_info_kill(%p[#%d],%d,%d,%d) = %d",
++ vxi, vxi->vx_id, pid, sig, (int)sip, retval);
+ return retval;
+ }
+