n_gsm: use goto-failpaths in gsm_init
authorJiri Slaby <jslaby@suse.cz>
Wed, 5 May 2021 09:19:08 +0000 (11:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 May 2021 14:57:16 +0000 (16:57 +0200)
Use the classic failpath handling using gotos in gsm_init. That way,
tty_unregister_ldisc needs not be repeated on two places.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20210505091928.22010-16-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/n_gsm.c

index 654e439..cce2ef0 100644 (file)
@@ -3252,9 +3252,9 @@ static int __init gsm_init(void)
 
        gsm_tty_driver = alloc_tty_driver(256);
        if (!gsm_tty_driver) {
-               tty_unregister_ldisc(N_GSM0710);
                pr_err("gsm_init: tty allocation failed.\n");
-               return -EINVAL;
+               status = -ENOMEM;
+               goto err_unreg_ldisc;
        }
        gsm_tty_driver->driver_name     = "gsmtty";
        gsm_tty_driver->name            = "gsmtty";
@@ -3270,14 +3270,18 @@ static int __init gsm_init(void)
        tty_set_operations(gsm_tty_driver, &gsmtty_ops);
 
        if (tty_register_driver(gsm_tty_driver)) {
-               put_tty_driver(gsm_tty_driver);
-               tty_unregister_ldisc(N_GSM0710);
                pr_err("gsm_init: tty registration failed.\n");
-               return -EBUSY;
+               status = -EBUSY;
+               goto err_put_driver;
        }
        pr_debug("gsm_init: loaded as %d,%d.\n",
                        gsm_tty_driver->major, gsm_tty_driver->minor_start);
        return 0;
+err_put_driver:
+       put_tty_driver(gsm_tty_driver);
+err_unreg_ldisc:
+       tty_unregister_ldisc(N_GSM0710);
+       return status;
 }
 
 static void __exit gsm_exit(void)