diff --git a/[refs] b/[refs] index 2ff6d5344755..00c321c4fa72 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 370c28def65b3a5765192753a164403619b41d01 +refs/heads/master: 0d0df599f1f11f12d589318bacb59a50fb5c0310 diff --git a/trunk/kernel/exit.c b/trunk/kernel/exit.c index e61891f80123..f7864ac2ecc1 100644 --- a/trunk/kernel/exit.c +++ b/trunk/kernel/exit.c @@ -359,10 +359,8 @@ void __set_special_pids(struct pid *pid) { struct task_struct *curr = current->group_leader; - if (task_session(curr) != pid) { + if (task_session(curr) != pid) change_pid(curr, PIDTYPE_SID, pid); - proc_sid_connector(curr); - } if (task_pgrp(curr) != pid) change_pid(curr, PIDTYPE_PGID, pid); diff --git a/trunk/kernel/sys.c b/trunk/kernel/sys.c index 255475d163e0..1828f8d10844 100644 --- a/trunk/kernel/sys.c +++ b/trunk/kernel/sys.c @@ -1110,6 +1110,8 @@ SYSCALL_DEFINE0(setsid) err = session; out: write_unlock_irq(&tasklist_lock); + if (err > 0) + proc_sid_connector(group_leader); return err; }