pty: Fix locking bug on error path
authorAlan Cox <alan@linux.intel.com>
Wed, 19 Sep 2012 14:34:47 +0000 (15:34 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Sep 2012 16:51:09 +0000 (09:51 -0700)
We end up dropping the mutex twice on some errors. We don't want to do
that.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/pty.c

index 2bace84..a82b399 100644 (file)
@@ -628,6 +628,7 @@ static int ptmx_open(struct inode *inode, struct file *filp)
        index = devpts_new_index(inode);
        if (index < 0) {
                retval = index;
+               mutex_unlock(&devpts_mutex);
                goto err_file;
        }
 
@@ -667,7 +668,6 @@ out:
        mutex_unlock(&tty_mutex);
        devpts_kill_index(inode, index);
 err_file:
-        mutex_unlock(&devpts_mutex);
        tty_free_file(filp);
        return retval;
 }