mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
tty: srmcons: fix retval from srmcons_init()
The value returned from srmcons_init() was -ENODEV for over 2 decades. But it does not matter, given device_initcall() ignores retvals. But to be honest, return 0 in case the tty driver was registered properly. To do that, the condition is inverted and a short path taken in case of error. err_free_drv is introduced as it will be used from more places later. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Tested-by: Magnus Lindholm <linmag7@gmail.com> Cc: Richard Henderson <richard.henderson@linaro.org> Cc: Matt Turner <mattst88@gmail.com> Cc: linux-alpha@vger.kernel.org Link: https://lore.kernel.org/r/20250317070046.24386-22-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
794d7b2721
commit
528f31191e
|
|
@ -196,40 +196,44 @@ static const struct tty_operations srmcons_ops = {
|
|||
static int __init
|
||||
srmcons_init(void)
|
||||
{
|
||||
struct tty_driver *driver;
|
||||
int err;
|
||||
|
||||
timer_setup(&srmcons_singleton.timer, srmcons_receive_chars, 0);
|
||||
if (srm_is_registered_console) {
|
||||
struct tty_driver *driver;
|
||||
int err;
|
||||
|
||||
driver = tty_alloc_driver(MAX_SRM_CONSOLE_DEVICES, 0);
|
||||
if (IS_ERR(driver))
|
||||
return PTR_ERR(driver);
|
||||
if (!srm_is_registered_console)
|
||||
return -ENODEV;
|
||||
|
||||
tty_port_init(&srmcons_singleton.port);
|
||||
driver = tty_alloc_driver(MAX_SRM_CONSOLE_DEVICES, 0);
|
||||
if (IS_ERR(driver))
|
||||
return PTR_ERR(driver);
|
||||
|
||||
driver->driver_name = "srm";
|
||||
driver->name = "srm";
|
||||
driver->major = 0; /* dynamic */
|
||||
driver->minor_start = 0;
|
||||
driver->type = TTY_DRIVER_TYPE_SYSTEM;
|
||||
driver->subtype = SYSTEM_TYPE_SYSCONS;
|
||||
driver->init_termios = tty_std_termios;
|
||||
tty_set_operations(driver, &srmcons_ops);
|
||||
tty_port_link_device(&srmcons_singleton.port, driver, 0);
|
||||
err = tty_register_driver(driver);
|
||||
if (err) {
|
||||
tty_driver_kref_put(driver);
|
||||
tty_port_destroy(&srmcons_singleton.port);
|
||||
return err;
|
||||
}
|
||||
srmcons_driver = driver;
|
||||
}
|
||||
tty_port_init(&srmcons_singleton.port);
|
||||
|
||||
return -ENODEV;
|
||||
driver->driver_name = "srm";
|
||||
driver->name = "srm";
|
||||
driver->major = 0; /* dynamic */
|
||||
driver->minor_start = 0;
|
||||
driver->type = TTY_DRIVER_TYPE_SYSTEM;
|
||||
driver->subtype = SYSTEM_TYPE_SYSCONS;
|
||||
driver->init_termios = tty_std_termios;
|
||||
tty_set_operations(driver, &srmcons_ops);
|
||||
tty_port_link_device(&srmcons_singleton.port, driver, 0);
|
||||
err = tty_register_driver(driver);
|
||||
if (err)
|
||||
goto err_free_drv;
|
||||
|
||||
srmcons_driver = driver;
|
||||
|
||||
return 0;
|
||||
err_free_drv:
|
||||
tty_driver_kref_put(driver);
|
||||
tty_port_destroy(&srmcons_singleton.port);
|
||||
|
||||
return err;
|
||||
}
|
||||
device_initcall(srmcons_init);
|
||||
|
||||
|
||||
/*
|
||||
* The console driver
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user