提交 bce65f18 编写于 作者: P Peter Hurley 提交者: Greg Kroah-Hartman

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: NPeter Hurley <peter@hurleysoftware.com>
Reviewed-by: NAlan Cox <alan@linux.intel.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 11d9befd
...@@ -504,7 +504,7 @@ void proc_clear_tty(struct task_struct *p) ...@@ -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) ...@@ -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(&current->sighand->siglock);
__proc_set_tty(tsk, tty); __proc_set_tty(tty);
spin_unlock_irq(&tsk->sighand->siglock); spin_unlock_irq(&current->sighand->siglock);
} }
struct tty_struct *get_current_tty(void) struct tty_struct *get_current_tty(void)
...@@ -2156,7 +2156,7 @@ static int tty_open(struct inode *inode, struct file *filp) ...@@ -2156,7 +2156,7 @@ static int tty_open(struct inode *inode, struct file *filp)
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(&current->sighand->siglock); spin_unlock_irq(&current->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) ...@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册