aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2011-03-23 05:48:32 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-04-19 17:42:59 -0400
commitd55435037539837a741d54690427d37f96ed87fa (patch)
tree24784d5465a5634afa89dd1d6fa67151cfaec1ff
parentd65c57f4ece4c31380eef9975a04840df7b260cc (diff)
TTY: unify tty_init_dev fail path handling
Change it so that we call the deinit functions at one place at the end of the function (by gotos). And while at it use some sane label names. This is a preparation for the deinitialization of tty in the next patch. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Julian Anastasov <ja@ssi.bg> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/tty/tty_io.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index 188632e4734d..026bf2f6f5f2 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -1391,16 +1391,15 @@ struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx,
1391 return ERR_PTR(-ENODEV); 1391 return ERR_PTR(-ENODEV);
1392 1392
1393 tty = alloc_tty_struct(); 1393 tty = alloc_tty_struct();
1394 if (!tty) 1394 if (!tty) {
1395 goto fail_no_mem; 1395 retval = -ENOMEM;
1396 goto err_module_put;
1397 }
1396 initialize_tty_struct(tty, driver, idx); 1398 initialize_tty_struct(tty, driver, idx);
1397 1399
1398 retval = tty_driver_install_tty(driver, tty); 1400 retval = tty_driver_install_tty(driver, tty);
1399 if (retval < 0) { 1401 if (retval < 0)
1400 free_tty_struct(tty); 1402 goto err_free_tty;
1401 module_put(driver->owner);
1402 return ERR_PTR(retval);
1403 }
1404 1403
1405 /* 1404 /*
1406 * Structures all installed ... call the ldisc open routines. 1405 * Structures all installed ... call the ldisc open routines.
@@ -1409,15 +1408,17 @@ struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx,
1409 */ 1408 */
1410 retval = tty_ldisc_setup(tty, tty->link); 1409 retval = tty_ldisc_setup(tty, tty->link);
1411 if (retval) 1410 if (retval)
1412 goto release_mem_out; 1411 goto err_release_tty;
1413 return tty; 1412 return tty;
1414 1413
1415fail_no_mem: 1414err_free_tty:
1415 free_tty_struct(tty);
1416err_module_put:
1416 module_put(driver->owner); 1417 module_put(driver->owner);
1417 return ERR_PTR(-ENOMEM); 1418 return ERR_PTR(retval);
1418 1419
1419 /* call the tty release_tty routine to clean out this slot */ 1420 /* call the tty release_tty routine to clean out this slot */
1420release_mem_out: 1421err_release_tty:
1421 if (printk_ratelimit()) 1422 if (printk_ratelimit())
1422 printk(KERN_INFO "tty_init_dev: ldisc open failed, " 1423 printk(KERN_INFO "tty_init_dev: ldisc open failed, "
1423 "clearing slot %d\n", idx); 1424 "clearing slot %d\n", idx);