aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sys.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sys.c')
-rw-r--r--kernel/sys.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/sys.c b/kernel/sys.c
index a0c1a29a507f..1ac2d1c5d84e 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1484,7 +1484,6 @@ asmlinkage long sys_setsid(void)
1484 pid_t session; 1484 pid_t session;
1485 int err = -EPERM; 1485 int err = -EPERM;
1486 1486
1487 mutex_lock(&tty_mutex);
1488 write_lock_irq(&tasklist_lock); 1487 write_lock_irq(&tasklist_lock);
1489 1488
1490 /* Fail if I am already a session leader */ 1489 /* Fail if I am already a session leader */
@@ -1504,12 +1503,15 @@ asmlinkage long sys_setsid(void)
1504 1503
1505 group_leader->signal->leader = 1; 1504 group_leader->signal->leader = 1;
1506 __set_special_pids(session, session); 1505 __set_special_pids(session, session);
1506
1507 spin_lock(&group_leader->sighand->siglock);
1507 group_leader->signal->tty = NULL; 1508 group_leader->signal->tty = NULL;
1508 group_leader->signal->tty_old_pgrp = 0; 1509 group_leader->signal->tty_old_pgrp = 0;
1510 spin_unlock(&group_leader->sighand->siglock);
1511
1509 err = process_group(group_leader); 1512 err = process_group(group_leader);
1510out: 1513out:
1511 write_unlock_irq(&tasklist_lock); 1514 write_unlock_irq(&tasklist_lock);
1512 mutex_unlock(&tty_mutex);
1513 return err; 1515 return err;
1514} 1516}
1515 1517