summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRasmus Villemoes <linux@rasmusvillemoes.dk>2014-07-13 01:44:00 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-07-13 02:21:47 +0200
commit07584d4a356ef52c084e1e4fedc22858ffc2f8b2 (patch)
treee9d1e2f4570ff89f9ae770c4df9e541e569533c7
parentdrivers: tty: Merge alloc_tty_struct and initialize_tty_struct (diff)
downloadlinux-07584d4a356ef52c084e1e4fedc22858ffc2f8b2.tar.xz
linux-07584d4a356ef52c084e1e4fedc22858ffc2f8b2.zip
drivers: tty: Fix use-after-free in pty_common_install
In 2c964a2f "drivers: tty: Merge alloc_tty_struct and initialize_tty_struct", I messed up the refactorization of pty_common_install, causing use-after-free and NULL pointer derefs on various error paths. This should fix it. Reported-by: Julia Lawall <julia.lawall@lip6.fr> Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/tty/pty.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index ac723e3c031a..9bbdb1de12e2 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -388,7 +388,7 @@ err_deinit_tty:
deinitialize_tty_struct(o_tty);
free_tty_struct(o_tty);
err_put_module:
- module_put(o_tty->driver->owner);
+ module_put(driver->other->owner);
err:
kfree(ports[0]);
kfree(ports[1]);