[v2,1/1] serial: core: Fix error handling for serial_core_ctrl_device_add()

Message ID 20230602070007.59268-1-tony@atomide.com
State New
Headers
Series [v2,1/1] serial: core: Fix error handling for serial_core_ctrl_device_add() |

Commit Message

Tony Lindgren June 2, 2023, 7 a.m. UTC
  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>
---

Changes since v1:

- Stop translating all errors to -ENODEV

- There's no need to use IS_ERR_OR_NULL() as noted by Jiri

---
 drivers/tty/serial/serial_core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Jiri Slaby June 2, 2023, 7:22 a.m. UTC | #1
On 02. 06. 23, 9:00, Tony Lindgren wrote:
> 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>

thanks,
  
Andy Shevchenko June 2, 2023, 2:53 p.m. UTC | #2
On Fri, Jun 02, 2023 at 10:00:05AM +0300, Tony Lindgren wrote:
> 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.

Jiri already asked the same question I have had on a glance, and this all
solved here, so
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

> Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM")
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
> 
> Changes since v1:
> 
> - Stop translating all errors to -ENODEV
> 
> - There's no need to use IS_ERR_OR_NULL() as noted by Jiri
> 
> ---
>  drivers/tty/serial/serial_core.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
> --- a/drivers/tty/serial/serial_core.c
> +++ b/drivers/tty/serial/serial_core.c
> @@ -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;
> -- 
> 2.41.0
  

Patch

diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -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;