Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > fc11cd6e1c513a17304da94a5390f3cd > files > 1748

kernel-2.6.18-194.11.1.el5.src.rpm

From: Oleg Nesterov <oleg@redhat.com>
Date: Fri, 21 Nov 2008 16:15:30 +0100
Subject: [misc] setpgid returns ESRCH in some situations
Message-id: 20081121151530.GA13664@redhat.com
O-Subject: [RHEL5 PATCH] BZ#472433: setpgid() returns ESRCH in some situations
Bugzilla: 472433
RH-Acked-by: Jerome Marchand <jmarchan@redhat.com>
RH-Acked-by: Anton Arapov <aarapov@redhat.com>
RH-Acked-by: John Feeney <jfeeney@redhat.com>

From: Guy Streeter <streeter@redhat.com>

Backport of upstream
"setpgid(child) fails if the child was forked by sub-thread"
commit b07e35f94a7b6a059f889b904529ee907dc0634d.

Note: unlike upstream, we use ->parent, not ->real_parent. This is correct
due to utrace.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>

diff --git a/kernel/sys.c b/kernel/sys.c
index 7695fc5..18b3f74 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1275,7 +1275,7 @@ asmlinkage long sys_setpgid(pid_t pid, pid_t pgid)
 	if (!thread_group_leader(p))
 		goto out;
 
-	if (p->parent == group_leader) {
+	if (p->parent->tgid == group_leader->tgid) {
 		err = -EPERM;
 		if (p->signal->session != group_leader->signal->session)
 			goto out;