linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Javier Carrasco <javier.carrasco.cruz@gmail.com>
To: Pavel Machek <pavel@ucw.cz>, Lee Jones <lee@kernel.org>,
	 Matthias Brugger <matthias.bgg@gmail.com>,
	 AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	 Gene Chen <gene_chen@richtek.com>,
	 Jacek Anaszewski <jacek.anaszewski@gmail.com>,
	 Bartosz Golaszewski <brgl@bgdev.pl>,
	Chen-Yu Tsai <wens@csie.org>,
	 Jernej Skrabec <jernej.skrabec@gmail.com>,
	 Samuel Holland <samuel@sholland.org>,
	 Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org,
	 linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,  linux-sunxi@lists.linux.dev,
	 Javier Carrasco <javier.carrasco.cruz@gmail.com>,
	stable@vger.kernel.org
Subject: [PATCH 01/18] leds: flash: mt6360: fix device_for_each_child_node() refcounting in error paths
Date: Fri, 27 Sep 2024 01:20:52 +0200	[thread overview]
Message-ID: <20240927-leds_device_for_each_child_node_scoped-v1-1-95c0614b38c8@gmail.com> (raw)
In-Reply-To: <20240927-leds_device_for_each_child_node_scoped-v1-0-95c0614b38c8@gmail.com>

The device_for_each_child_node() macro requires explicit calls to
fwnode_handle_put() upon early exits to avoid memory leaks, and in
this case the error paths are handled after jumping to
'out_flash_realease', which misses that required call to
to decrement the refcount of the child node.

A more elegant and robust solution is using the scoped variant of the
loop, which automatically handles such early exits.

Fix the child node refcounting in the error paths by using
device_for_each_child_node_scoped().

Cc: stable@vger.kernel.org
Fixes: 679f8652064b ("leds: Add mt6360 driver")
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
 drivers/leds/flash/leds-mt6360.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/leds/flash/leds-mt6360.c b/drivers/leds/flash/leds-mt6360.c
index 4c74f1cf01f0..676236c19ec4 100644
--- a/drivers/leds/flash/leds-mt6360.c
+++ b/drivers/leds/flash/leds-mt6360.c
@@ -784,7 +784,6 @@ static void mt6360_v4l2_flash_release(struct mt6360_priv *priv)
 static int mt6360_led_probe(struct platform_device *pdev)
 {
 	struct mt6360_priv *priv;
-	struct fwnode_handle *child;
 	size_t count;
 	int i = 0, ret;
 
@@ -811,7 +810,7 @@ static int mt6360_led_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	device_for_each_child_node(&pdev->dev, child) {
+	device_for_each_child_node_scoped(&pdev->dev, child) {
 		struct mt6360_led *led = priv->leds + i;
 		struct led_init_data init_data = { .fwnode = child, };
 		u32 reg, led_color;

-- 
2.43.0



  reply	other threads:[~2024-09-26 23:23 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-26 23:20 [PATCH 00/18] leds: switch to device_for_each_child_node_scoped() Javier Carrasco
2024-09-26 23:20 ` Javier Carrasco [this message]
2024-09-26 23:20 ` [PATCH 02/18] leds: flash: mt6370: " Javier Carrasco
2024-09-26 23:20 ` [PATCH 03/18] leds: flash: leds-qcom-flash: " Javier Carrasco
2024-09-26 23:20 ` [PATCH 04/18] leds: aw200xx: " Javier Carrasco
2024-09-26 23:20 ` [PATCH 05/18] leds: cr0014114: " Javier Carrasco
2024-11-23 19:31   ` Andy Shevchenko
2024-09-26 23:20 ` [PATCH 06/18] leds: el15203000: " Javier Carrasco
2024-11-23 19:34   ` Andy Shevchenko
2024-09-26 23:20 ` [PATCH 07/18] leds: gpio: " Javier Carrasco
2024-11-23 19:35   ` Andy Shevchenko
2024-09-26 23:20 ` [PATCH 08/18] leds: lm3532: " Javier Carrasco
2024-11-23 19:37   ` Andy Shevchenko
2024-09-26 23:21 ` [PATCH 09/18] leds: lm3697: " Javier Carrasco
2024-11-23 19:37   ` Andy Shevchenko
2024-09-26 23:21 ` [PATCH 10/18] leds: lp50xx: " Javier Carrasco
2024-09-26 23:21 ` [PATCH 11/18] leds: max77650: " Javier Carrasco
2024-09-27  6:36   ` Bartosz Golaszewski
2024-11-23 19:47   ` Andy Shevchenko
2024-09-26 23:21 ` [PATCH 12/18] leds: ns2: " Javier Carrasco
2024-09-26 23:21 ` [PATCH 13/18] leds: pca963x: " Javier Carrasco
2024-11-23 19:45   ` Andy Shevchenko
2024-09-26 23:21 ` [PATCH 14/18] leds: pwm: " Javier Carrasco
2024-09-26 23:21 ` [PATCH 15/18] leds: sun50i-a100: " Javier Carrasco
2024-11-23 19:41   ` Andy Shevchenko
2024-09-26 23:21 ` [PATCH 16/18] leds: tca6507: " Javier Carrasco
2024-11-23 19:40   ` Andy Shevchenko
2024-09-26 23:21 ` [PATCH 17/18] leds: rgb: ktd202x: " Javier Carrasco
2024-09-26 23:21 ` [PATCH 18/18] leds: rgb: mt6370: " Javier Carrasco
2024-10-09 14:20 ` [PATCH 00/18] leds: " Lee Jones
2024-11-23 19:29 ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240927-leds_device_for_each_child_node_scoped-v1-1-95c0614b38c8@gmail.com \
    --to=javier.carrasco.cruz@gmail.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=brgl@bgdev.pl \
    --cc=gene_chen@richtek.com \
    --cc=jacek.anaszewski@gmail.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=lee@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=matthias.bgg@gmail.com \
    --cc=pavel@ucw.cz \
    --cc=samuel@sholland.org \
    --cc=stable@vger.kernel.org \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).