lkml.org 
[lkml]   [2012]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 21/24] TTY: centralize fail paths in tty_register_driver
    Date
    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 <jslaby@suse.cz>
    ---
    drivers/tty/tty_io.c | 18 ++++++------------
    1 file changed, 6 insertions(+), 12 deletions(-)

    diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
    index b425c79..d6e045b 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);

    /*
    --
    1.7.10.3



    \
     
     \ /
      Last update: 2012-06-04 15:43    [W:0.025 / U:62.728 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site