Chrome platform driver development
 help / color / mirror / Atom feed
* [PATCH] platform/chrome: cross_ec_type: fix missing fwnode reference decrement
@ 2024-10-09 18:55 Javier Carrasco
  2024-10-09 19:00 ` Javier Carrasco
  0 siblings, 1 reply; 3+ messages in thread
From: Javier Carrasco @ 2024-10-09 18:55 UTC (permalink / raw)
  To: Prashant Malani, Benson Leung, Tzung-Bi Shih, Guenter Roeck,
	Heikki Krogerus, Enric Balletbo i Serra
  Cc: chrome-platform, linux-kernel, stable, Javier Carrasco

The device_for_each_child_node() macro requires explicit calls to
fwnode_handle_put() upon early exits (return, break, goto) to decrement
the fwnode's refcount, and avoid levaing a node reference behind.

Add the missing fwnode_handle_put() after the common label for all error
paths.

Cc: stable@vger.kernel.org
Fixes: fdc6b21e2444 ("platform/chrome: Add Type C connector class driver")
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
I usually switch to the scoped variant of the macro to fix such issues,
but given that the fix is relevant for stable kernels, I have provided
the "classical" approach by adding the missing fwnode_handle_put().

If switching to the scoped variant is desired, please let me know.
This driver and cross_typec_switch could be easily converted.

By the way, I wonder why all error paths are redirected to the same
label to unregister ports, even before registering them (which seems to
be harmless because unregistered ports are ignored, but still). With this
fix, that jump to the label is definitely required, but if the scoped
variant is used, maybe some simple returns would be enough.
---
 drivers/platform/chrome/cros_ec_typec.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c
index c7781aea0b88..f1324466efac 100644
--- a/drivers/platform/chrome/cros_ec_typec.c
+++ b/drivers/platform/chrome/cros_ec_typec.c
@@ -409,6 +409,7 @@ static int cros_typec_init_ports(struct cros_typec_data *typec)
 	return 0;
 
 unregister_ports:
+	fwnode_handle_put(fwnode);
 	cros_unregister_ports(typec);
 	return ret;
 }

---
base-commit: b6270c3bca987530eafc6a15f9d54ecd0033e0e3
change-id: 20241009-cross_ec_typec_fwnode_handle_put-9f13b4bd467f

Best regards,
-- 
Javier Carrasco <javier.carrasco.cruz@gmail.com>


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/chrome: cross_ec_type: fix missing fwnode reference decrement
  2024-10-09 18:55 [PATCH] platform/chrome: cross_ec_type: fix missing fwnode reference decrement Javier Carrasco
@ 2024-10-09 19:00 ` Javier Carrasco
  2024-10-11  3:17   ` Tzung-Bi Shih
  0 siblings, 1 reply; 3+ messages in thread
From: Javier Carrasco @ 2024-10-09 19:00 UTC (permalink / raw)
  To: Prashant Malani, Benson Leung, Tzung-Bi Shih, Guenter Roeck,
	Heikki Krogerus, Enric Balletbo i Serra
  Cc: chrome-platform, linux-kernel, stable

On 09/10/2024 20:55, Javier Carrasco wrote:
> The device_for_each_child_node() macro requires explicit calls to
> fwnode_handle_put() upon early exits (return, break, goto) to decrement
> the fwnode's refcount, and avoid levaing a node reference behind.
> 
> Add the missing fwnode_handle_put() after the common label for all error
> paths.
> 
> Cc: stable@vger.kernel.org
> Fixes: fdc6b21e2444 ("platform/chrome: Add Type C connector class driver")
> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
> ---
> I usually switch to the scoped variant of the macro to fix such issues,
> but given that the fix is relevant for stable kernels, I have provided
> the "classical" approach by adding the missing fwnode_handle_put().
> 
> If switching to the scoped variant is desired, please let me know.
> This driver and cross_typec_switch could be easily converted.
> 
> By the way, I wonder why all error paths are redirected to the same
> label to unregister ports, even before registering them (which seems to
> be harmless because unregistered ports are ignored, but still). With this
> fix, that jump to the label is definitely required, but if the scoped
> variant is used, maybe some simple returns would be enough.
> ---
>  drivers/platform/chrome/cros_ec_typec.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c
> index c7781aea0b88..f1324466efac 100644
> --- a/drivers/platform/chrome/cros_ec_typec.c
> +++ b/drivers/platform/chrome/cros_ec_typec.c
> @@ -409,6 +409,7 @@ static int cros_typec_init_ports(struct cros_typec_data *typec)
>  	return 0;
>  
>  unregister_ports:
> +	fwnode_handle_put(fwnode);
>  	cros_unregister_ports(typec);
>  	return ret;
>  }
> 
> ---
> base-commit: b6270c3bca987530eafc6a15f9d54ecd0033e0e3
> change-id: 20241009-cross_ec_typec_fwnode_handle_put-9f13b4bd467f
> 
> Best regards,

Small typo in the description, should be cross_ec_typec (last c is
missing). I will fix that for v2, but I will wait for feedback and
reviews to this first version.

Best regards,
Javier Carrasco

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/chrome: cross_ec_type: fix missing fwnode reference decrement
  2024-10-09 19:00 ` Javier Carrasco
@ 2024-10-11  3:17   ` Tzung-Bi Shih
  0 siblings, 0 replies; 3+ messages in thread
From: Tzung-Bi Shih @ 2024-10-11  3:17 UTC (permalink / raw)
  To: Javier Carrasco
  Cc: Prashant Malani, Benson Leung, Guenter Roeck, Heikki Krogerus,
	Enric Balletbo i Serra, chrome-platform, linux-kernel, stable

On Wed, Oct 09, 2024 at 09:00:41PM +0200, Javier Carrasco wrote:
> On 09/10/2024 20:55, Javier Carrasco wrote:
> > By the way, I wonder why all error paths are redirected to the same
> > label to unregister ports, even before registering them (which seems to
> > be harmless because unregistered ports are ignored, but still). With this

I don't know the context a lot.  But it looks like just a way to unregister
the registered ones in the error path.

> Small typo in the description, should be cross_ec_typec (last c is
> missing). I will fix that for v2, but I will wait for feedback and
> reviews to this first version.

Also cross -> cros.  Otherwise, the fix looks good to me.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-10-11  3:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-09 18:55 [PATCH] platform/chrome: cross_ec_type: fix missing fwnode reference decrement Javier Carrasco
2024-10-09 19:00 ` Javier Carrasco
2024-10-11  3:17   ` Tzung-Bi Shih

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox