serial: core: Fix error handling for serial_core_ctrl_device_add()
authorTony Lindgren <tony@atomide.com>
Fri, 2 Jun 2023 07:00:05 +0000 (10:00 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 Jun 2023 07:30:55 +0000 (08:30 +0100)
Checking for NULL is incorrect as serial_base_ctrl_add() uses ERR_PTR().

Let's also pass any returned error along, there's no reason to translate
all errors to -ENODEV.

Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM")
Signed-off-by: Tony Lindgren <tony@atomide.com>
Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
Link: https://lore.kernel.org/r/20230602070007.59268-1-tony@atomide.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial_core.c

index efda90215ee9b6852a37cc689cb0153f1a248867..831d033611e61b77862b46ec69e1bcdcaba79d86 100644 (file)
@@ -3342,8 +3342,8 @@ int serial_core_register_port(struct uart_driver *drv, struct uart_port *port)
        ctrl_dev = serial_core_ctrl_find(drv, port->dev, port->ctrl_id);
        if (!ctrl_dev) {
                new_ctrl_dev = serial_core_ctrl_device_add(port);
-               if (!new_ctrl_dev) {
-                       ret = -ENODEV;
+               if (IS_ERR(new_ctrl_dev)) {
+                       ret = PTR_ERR(new_ctrl_dev);
                        goto err_unlock;
                }
                ctrl_dev = new_ctrl_dev;