serial: core: Fix error handling for serial_core_ctrl_device_add()

Message ID 20230602064104.41508-1-tony@atomide.com
State New
Headers
Series serial: core: Fix error handling for serial_core_ctrl_device_add() |

Commit Message

Tony Lindgren June 2, 2023, 6:41 a.m. UTC
  Checking for NULL is not enough as serial_base_ctrl_add() uses ERR_PTR().

Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM")
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/tty/serial/serial_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Tony Lindgren June 2, 2023, 6:46 a.m. UTC | #1
* Tony Lindgren <tony@atomide.com> [230602 06:41]:
> Checking for NULL is not enough as serial_base_ctrl_add() uses ERR_PTR().
> 
> Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM")
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  drivers/tty/serial/serial_core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> 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,7 +3342,7 @@ 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) {
> +		if (IS_ERR_OR_NULL(new_ctrl_dev)) {
>  			ret = -ENODEV;
>  			goto err_unlock;
>  		}

Hmm actually we should also change to use ret = PTR_ERR(new_ctrl_dev) here
instead of translating all the errors to -ENODEV. Will send out v2 version.

Regards,

Tony
  
Jiri Slaby June 2, 2023, 6:48 a.m. UTC | #2
On 02. 06. 23, 8:46, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [230602 06:41]:
>> Checking for NULL is not enough as serial_base_ctrl_add() uses ERR_PTR().
>>
>> Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM")
>> Signed-off-by: Tony Lindgren <tony@atomide.com>
>> ---
>>   drivers/tty/serial/serial_core.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> 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,7 +3342,7 @@ 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) {
>> +		if (IS_ERR_OR_NULL(new_ctrl_dev)) {
>>   			ret = -ENODEV;
>>   			goto err_unlock;
>>   		}
> 
> Hmm actually we should also change to use ret = PTR_ERR(new_ctrl_dev) here
> instead of translating all the errors to -ENODEV. Will send out v2 version.

Why OR_NULL at all, actually?
  
Tony Lindgren June 2, 2023, 6:51 a.m. UTC | #3
* Jiri Slaby <jirislaby@kernel.org> [230602 06:48]:
> On 02. 06. 23, 8:46, Tony Lindgren wrote:
> > * Tony Lindgren <tony@atomide.com> [230602 06:41]:
> > > Checking for NULL is not enough as serial_base_ctrl_add() uses ERR_PTR().
> > > 
> > > Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM")
> > > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > > ---
> > >   drivers/tty/serial/serial_core.c | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > 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,7 +3342,7 @@ 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) {
> > > +		if (IS_ERR_OR_NULL(new_ctrl_dev)) {
> > >   			ret = -ENODEV;
> > >   			goto err_unlock;
> > >   		}
> > 
> > Hmm actually we should also change to use ret = PTR_ERR(new_ctrl_dev) here
> > instead of translating all the errors to -ENODEV. Will send out v2 version.
> 
> Why OR_NULL at all, actually?

Yup there should be no need for that thanks.

Regards,

Tony
  

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,7 +3342,7 @@  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) {
+		if (IS_ERR_OR_NULL(new_ctrl_dev)) {
 			ret = -ENODEV;
 			goto err_unlock;
 		}