Merge tag 'dm-3.6-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm
[deliverable/linux.git] / drivers / tty / tty_io.c
index d939bd705c71d82e6cc83af0ca05d0d3421beeda..b425c79675ad96adc187c601e36d65c2bebc3581 100644 (file)
@@ -855,10 +855,11 @@ void disassociate_ctty(int on_exit)
  */
 void no_tty(void)
 {
+       /* FIXME: Review locking here. The tty_lock never covered any race
+          between a new association and proc_clear_tty but possible we need
+          to protect against this anyway */
        struct task_struct *tsk = current;
-       tty_lock();
        disassociate_ctty(0);
-       tty_unlock();
        proc_clear_tty(tsk);
 }
 
@@ -1800,6 +1801,9 @@ int tty_release(struct inode *inode, struct file *filp)
  *
  *     We cannot return driver and index like for the other nodes because
  *     devpts will not work then. It expects inodes to be from devpts FS.
+ *
+ *     We need to move to returning a refcounted object from all the lookup
+ *     paths including this one.
  */
 static struct tty_struct *tty_open_current_tty(dev_t device, struct file *filp)
 {
@@ -1816,6 +1820,7 @@ static struct tty_struct *tty_open_current_tty(dev_t device, struct file *filp)
        /* noctty = 1; */
        tty_kref_put(tty);
        /* FIXME: we put a reference and return a TTY! */
+       /* This is only safe because the caller holds tty_mutex */
        return tty;
 }
 
This page took 0.025805 seconds and 5 git commands to generate.