From: Jiri Slaby Date: Mon, 4 Jun 2012 11:35:35 +0000 (+0200) Subject: TTY: centralize fail paths in tty_register_driver X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=9bb8a3d4109f3b267cca9f6f071e2298eed4f593;p=linux-beck.git TTY: centralize fail paths in tty_register_driver Currently, some failures are handled in if's false branches, some at the end of tty_register_driver via goto-labels. Let us handle the failures at the end of the functions to have the failure handling at a single place. The only thing needed is to label the lines properly and jump there. Signed-off-by: Jiri Slaby Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index b425c79675ad..d6e045b7079a 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -3144,10 +3144,8 @@ int tty_register_driver(struct tty_driver *driver) dev = MKDEV(driver->major, driver->minor_start); error = register_chrdev_region(dev, driver->num, driver->name); } - if (error < 0) { - kfree(p); - return error; - } + if (error < 0) + goto err_free_p; if (p) { driver->ttys = (struct tty_struct **)p; @@ -3160,13 +3158,8 @@ int tty_register_driver(struct tty_driver *driver) cdev_init(&driver->cdev, &tty_fops); driver->cdev.owner = driver->owner; error = cdev_add(&driver->cdev, dev, driver->num); - if (error) { - unregister_chrdev_region(dev, driver->num); - driver->ttys = NULL; - driver->termios = NULL; - kfree(p); - return error; - } + if (error) + goto err_unreg_char; mutex_lock(&tty_mutex); list_add(&driver->tty_drivers, &tty_drivers); @@ -3193,13 +3186,14 @@ err: list_del(&driver->tty_drivers); mutex_unlock(&tty_mutex); +err_unreg_char: unregister_chrdev_region(dev, driver->num); driver->ttys = NULL; driver->termios = NULL; +err_free_p: kfree(p); return error; } - EXPORT_SYMBOL(tty_register_driver); /*