|
@@ -1376,6 +1376,8 @@ static void do_tty_hangup(struct work_struct *work)
|
|
read_unlock(&tasklist_lock);
|
|
read_unlock(&tasklist_lock);
|
|
|
|
|
|
tty->flags = 0;
|
|
tty->flags = 0;
|
|
|
|
+ put_pid(tty->session);
|
|
|
|
+ put_pid(tty->pgrp);
|
|
tty->session = NULL;
|
|
tty->session = NULL;
|
|
tty->pgrp = NULL;
|
|
tty->pgrp = NULL;
|
|
tty->ctrl_status = 0;
|
|
tty->ctrl_status = 0;
|
|
@@ -3841,6 +3843,9 @@ static struct pid *__proc_set_tty(struct task_struct *tsk, struct tty_struct *tt
|
|
{
|
|
{
|
|
struct pid *old_pgrp;
|
|
struct pid *old_pgrp;
|
|
if (tty) {
|
|
if (tty) {
|
|
|
|
+ /* We should not have a session or pgrp to here but.... */
|
|
|
|
+ put_pid(tty->session);
|
|
|
|
+ put_pid(tty->pgrp);
|
|
tty->session = get_pid(task_session(tsk));
|
|
tty->session = get_pid(task_session(tsk));
|
|
tty->pgrp = get_pid(task_pgrp(tsk));
|
|
tty->pgrp = get_pid(task_pgrp(tsk));
|
|
}
|
|
}
|