diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c index 4399f1dbd131dee45f1c09663a8ef2b2b5132de4..d9ea9e2c9ec5883448707e1aae68678da1b2042b 100644 --- a/drivers/tty/pty.c +++ b/drivers/tty/pty.c @@ -303,9 +303,11 @@ static int pty_common_install(struct tty_driver *driver, struct tty_struct *tty, int retval = -ENOMEM; o_tty = alloc_tty_struct(); + if (!o_tty) + goto err; ports[0] = kmalloc(sizeof **ports, GFP_KERNEL); ports[1] = kmalloc(sizeof **ports, GFP_KERNEL); - if (!o_tty || !ports[0] || !ports[1]) + if (!ports[0] || !ports[1]) goto err_free_tty; if (!try_module_get(driver->other->owner)) { /* This cannot in fact currently happen */ @@ -360,6 +362,7 @@ static int pty_common_install(struct tty_driver *driver, struct tty_struct *tty, kfree(ports[0]); kfree(ports[1]); free_tty_struct(o_tty); +err: return retval; }