[PATCH next] usb: typec: class: Unlocked on error in typec_register_partner()

Dan Carpenter posted 1 patch 8 months, 1 week ago
drivers/usb/typec/class.c | 1 +
1 file changed, 1 insertion(+)
[PATCH next] usb: typec: class: Unlocked on error in typec_register_partner()
Posted by Dan Carpenter 8 months, 1 week ago
We recently added some locking to this function but this error path
was accidentally missed.  Unlock before returning.

Fixes: ec27386de23a ("usb: typec: class: Fix NULL pointer access")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 drivers/usb/typec/class.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
index 3df3e3736916..67a533e35150 100644
--- a/drivers/usb/typec/class.c
+++ b/drivers/usb/typec/class.c
@@ -1056,6 +1056,7 @@ struct typec_partner *typec_register_partner(struct typec_port *port,
 	ret = device_register(&partner->dev);
 	if (ret) {
 		dev_err(&port->dev, "failed to register partner (%d)\n", ret);
+		mutex_unlock(&port->partner_link_lock);
 		put_device(&partner->dev);
 		return ERR_PTR(ret);
 	}
-- 
2.47.2
Re: [PATCH next] usb: typec: class: Unlocked on error in typec_register_partner()
Posted by Andrei Kuchynski 8 months ago
On Tue, Apr 15, 2025 at 12:45 PM Dan Carpenter <dan.carpenter@linaro.org> wrote:
> We recently added some locking to this function but this error path
> was accidentally missed.  Unlock before returning.
>
> Fixes: ec27386de23a ("usb: typec: class: Fix NULL pointer access")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>

Reviewed-by: Andrei Kuchynski <akuchynski@chromium.org>
> ---
>  drivers/usb/typec/class.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
> index 3df3e3736916..67a533e35150 100644
> --- a/drivers/usb/typec/class.c
> +++ b/drivers/usb/typec/class.c
> @@ -1056,6 +1056,7 @@ struct typec_partner *typec_register_partner(struct typec_port *port,
>         ret = device_register(&partner->dev);
>         if (ret) {
>                 dev_err(&port->dev, "failed to register partner (%d)\n", ret);
> +               mutex_unlock(&port->partner_link_lock);
>                 put_device(&partner->dev);
>                 return ERR_PTR(ret);
>         }
> --
> 2.47.2
>
Re: [PATCH next] usb: typec: class: Unlocked on error in typec_register_partner()
Posted by Heikki Krogerus 8 months, 1 week ago
On Tue, Apr 15, 2025 at 01:45:08PM +0300, Dan Carpenter wrote:
> We recently added some locking to this function but this error path
> was accidentally missed.  Unlock before returning.
> 
> Fixes: ec27386de23a ("usb: typec: class: Fix NULL pointer access")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>

Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

> ---
>  drivers/usb/typec/class.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
> index 3df3e3736916..67a533e35150 100644
> --- a/drivers/usb/typec/class.c
> +++ b/drivers/usb/typec/class.c
> @@ -1056,6 +1056,7 @@ struct typec_partner *typec_register_partner(struct typec_port *port,
>  	ret = device_register(&partner->dev);
>  	if (ret) {
>  		dev_err(&port->dev, "failed to register partner (%d)\n", ret);
> +		mutex_unlock(&port->partner_link_lock);
>  		put_device(&partner->dev);
>  		return ERR_PTR(ret);
>  	}
> -- 
> 2.47.2
> 

-- 
heikki