Skip to content

Commit 4a44bcb

Browse files
javiercarrascocruzgregkh
authored andcommitted
leds: flash: mt6360: Fix device_for_each_child_node() refcounting in error paths
commit 73b03b2 upstream. 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: 679f865 ("leds: Add mt6360 driver") Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> Link: https://lore.kernel.org/r/20240927-leds_device_for_each_child_node_scoped-v1-1-95c0614b38c8@gmail.com Signed-off-by: Lee Jones <lee@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 5294e8a commit 4a44bcb

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

drivers/leds/flash/leds-mt6360.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,6 @@ static void mt6360_v4l2_flash_release(struct mt6360_priv *priv)
774774
static int mt6360_led_probe(struct platform_device *pdev)
775775
{
776776
struct mt6360_priv *priv;
777-
struct fwnode_handle *child;
778777
size_t count;
779778
int i = 0, ret;
780779

@@ -801,7 +800,7 @@ static int mt6360_led_probe(struct platform_device *pdev)
801800
return -ENODEV;
802801
}
803802

804-
device_for_each_child_node(&pdev->dev, child) {
803+
device_for_each_child_node_scoped(&pdev->dev, child) {
805804
struct mt6360_led *led = priv->leds + i;
806805
struct led_init_data init_data = { .fwnode = child, };
807806
u32 reg, led_color;

0 commit comments

Comments
 (0)