OSDN Git Service

tty: Remove tsk parameter from proc_set_tty()
authorPeter Hurley <peter@hurleysoftware.com>
Thu, 16 Oct 2014 18:59:43 +0000 (14:59 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Nov 2014 00:26:13 +0000 (16:26 -0800)
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>
drivers/tty/tty_io.c

index 4966575..3d71642 100644 (file)
@@ -504,7 +504,7 @@ void proc_clear_tty(struct task_struct *p)
 
 /* 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) {
                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);
                put_pid(tty->session);
                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);
-               tty->session = get_pid(task_session(tsk));
-               if (tsk->signal->tty) {
+               tty->session = get_pid(task_session(current));
+               if (current->signal->tty) {
                        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);
-       tsk->signal->tty = tty_kref_get(tty);
-       tsk->signal->tty_old_pgrp = NULL;
+       put_pid(current->signal->tty_old_pgrp);
+       current->signal->tty = tty_kref_get(tty);
+       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);
-       __proc_set_tty(tsk, tty);
-       spin_unlock_irq(&tsk->sighand->siglock);
+       spin_lock_irq(&current->sighand->siglock);
+       __proc_set_tty(tty);
+       spin_unlock_irq(&current->sighand->siglock);
 }
 
 struct tty_struct *get_current_tty(void)
@@ -2156,7 +2156,7 @@ retry_open:
            current->signal->leader &&
            !current->signal->tty &&
            tty->session == NULL)
-               __proc_set_tty(current, tty);
+               __proc_set_tty(tty);
        spin_unlock_irq(&current->sighand->siglock);
        tty_unlock(tty);
        mutex_unlock(&tty_mutex);
@@ -2482,7 +2482,7 @@ static int tiocsctty(struct tty_struct *tty, int arg)
                        goto unlock;
                }
        }
-       proc_set_tty(current, tty);
+       proc_set_tty(tty);
 unlock:
        mutex_unlock(&tty_mutex);
        return ret;