tty: Remove tsk parameter from proc_set_tty()
Only the current task itself can set its controlling tty (other than before the task has been forked). Equivalent to existing usage. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Reviewed-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
11d9befda2
commit
bce65f1831
|
@ -504,7 +504,7 @@ void proc_clear_tty(struct task_struct *p)
|
||||||
|
|
||||||
/* Called under the sighand lock */
|
/* Called under the sighand lock */
|
||||||
|
|
||||||
static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty)
|
static void __proc_set_tty(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
if (tty) {
|
if (tty) {
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -512,24 +512,24 @@ static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty)
|
||||||
spin_lock_irqsave(&tty->ctrl_lock, flags);
|
spin_lock_irqsave(&tty->ctrl_lock, flags);
|
||||||
put_pid(tty->session);
|
put_pid(tty->session);
|
||||||
put_pid(tty->pgrp);
|
put_pid(tty->pgrp);
|
||||||
tty->pgrp = get_pid(task_pgrp(tsk));
|
tty->pgrp = get_pid(task_pgrp(current));
|
||||||
spin_unlock_irqrestore(&tty->ctrl_lock, flags);
|
spin_unlock_irqrestore(&tty->ctrl_lock, flags);
|
||||||
tty->session = get_pid(task_session(tsk));
|
tty->session = get_pid(task_session(current));
|
||||||
if (tsk->signal->tty) {
|
if (current->signal->tty) {
|
||||||
printk(KERN_DEBUG "tty not NULL!!\n");
|
printk(KERN_DEBUG "tty not NULL!!\n");
|
||||||
tty_kref_put(tsk->signal->tty);
|
tty_kref_put(current->signal->tty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
put_pid(tsk->signal->tty_old_pgrp);
|
put_pid(current->signal->tty_old_pgrp);
|
||||||
tsk->signal->tty = tty_kref_get(tty);
|
current->signal->tty = tty_kref_get(tty);
|
||||||
tsk->signal->tty_old_pgrp = NULL;
|
current->signal->tty_old_pgrp = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void proc_set_tty(struct task_struct *tsk, struct tty_struct *tty)
|
static void proc_set_tty(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
spin_lock_irq(&tsk->sighand->siglock);
|
spin_lock_irq(¤t->sighand->siglock);
|
||||||
__proc_set_tty(tsk, tty);
|
__proc_set_tty(tty);
|
||||||
spin_unlock_irq(&tsk->sighand->siglock);
|
spin_unlock_irq(¤t->sighand->siglock);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct tty_struct *get_current_tty(void)
|
struct tty_struct *get_current_tty(void)
|
||||||
|
@ -2156,7 +2156,7 @@ retry_open:
|
||||||
current->signal->leader &&
|
current->signal->leader &&
|
||||||
!current->signal->tty &&
|
!current->signal->tty &&
|
||||||
tty->session == NULL)
|
tty->session == NULL)
|
||||||
__proc_set_tty(current, tty);
|
__proc_set_tty(tty);
|
||||||
spin_unlock_irq(¤t->sighand->siglock);
|
spin_unlock_irq(¤t->sighand->siglock);
|
||||||
tty_unlock(tty);
|
tty_unlock(tty);
|
||||||
mutex_unlock(&tty_mutex);
|
mutex_unlock(&tty_mutex);
|
||||||
|
@ -2482,7 +2482,7 @@ static int tiocsctty(struct tty_struct *tty, int arg)
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
proc_set_tty(current, tty);
|
proc_set_tty(tty);
|
||||||
unlock:
|
unlock:
|
||||||
mutex_unlock(&tty_mutex);
|
mutex_unlock(&tty_mutex);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue