xtensa: ISS: don't panic in rs_init
[sfrench/cifs-2.6.git] / arch / xtensa / platforms / iss / console.c
index 21184488c277f1bb695e95c284a0c9a04eac4a77..0108504dfb4543fb7fccb65db8fe01e5a92429b7 100644 (file)
@@ -136,9 +136,13 @@ static const struct tty_operations serial_ops = {
 
 static int __init rs_init(void)
 {
-       tty_port_init(&serial_port);
+       int ret;
 
        serial_driver = alloc_tty_driver(SERIAL_MAX_NUM_LINES);
+       if (!serial_driver)
+               return -ENOMEM;
+
+       tty_port_init(&serial_port);
 
        /* Initialize the tty_driver structure */
 
@@ -156,8 +160,15 @@ static int __init rs_init(void)
        tty_set_operations(serial_driver, &serial_ops);
        tty_port_link_device(&serial_port, serial_driver, 0);
 
-       if (tty_register_driver(serial_driver))
-               panic("Couldn't register serial driver\n");
+       ret = tty_register_driver(serial_driver);
+       if (ret) {
+               pr_err("Couldn't register serial driver\n");
+               tty_driver_kref_put(serial_driver);
+               tty_port_destroy(&serial_port);
+
+               return ret;
+       }
+
        return 0;
 }