* [PATCH] regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt()
@ 2025-05-27 5:44 Dan Carpenter
2025-05-27 12:15 ` Laurent Pinchart
2025-06-09 13:40 ` Mark Brown
0 siblings, 2 replies; 3+ messages in thread
From: Dan Carpenter @ 2025-05-27 5:44 UTC (permalink / raw)
To: Cosmin Tanislav
Cc: Laurent Pinchart, Liam Girdwood, Mark Brown, linux-kernel,
kernel-janitors
There is a missing call to of_node_put() if devm_kcalloc() fails.
Fix this by changing the code to use cleanup.h magic to drop the
refcount.
Fixes: 6b0cd72757c6 ("regulator: max20086: fix invalid memory access")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
drivers/regulator/max20086-regulator.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/regulator/max20086-regulator.c b/drivers/regulator/max20086-regulator.c
index b4fe76e33ff2..fcdd2d0317a5 100644
--- a/drivers/regulator/max20086-regulator.c
+++ b/drivers/regulator/max20086-regulator.c
@@ -5,6 +5,7 @@
// Copyright (C) 2022 Laurent Pinchart <laurent.pinchart@idesonboard.com>
// Copyright (C) 2018 Avnet, Inc.
+#include <linux/cleanup.h>
#include <linux/err.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
@@ -133,11 +134,11 @@ static int max20086_regulators_register(struct max20086 *chip)
static int max20086_parse_regulators_dt(struct max20086 *chip, bool *boot_on)
{
struct of_regulator_match *matches;
- struct device_node *node;
unsigned int i;
int ret;
- node = of_get_child_by_name(chip->dev->of_node, "regulators");
+ struct device_node *node __free(device_node) =
+ of_get_child_by_name(chip->dev->of_node, "regulators");
if (!node) {
dev_err(chip->dev, "regulators node not found\n");
return -ENODEV;
@@ -153,7 +154,6 @@ static int max20086_parse_regulators_dt(struct max20086 *chip, bool *boot_on)
ret = of_regulator_match(chip->dev, node, matches,
chip->info->num_outputs);
- of_node_put(node);
if (ret < 0) {
dev_err(chip->dev, "Failed to match regulators\n");
return -EINVAL;
--
2.47.2
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt()
2025-05-27 5:44 [PATCH] regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt() Dan Carpenter
@ 2025-05-27 12:15 ` Laurent Pinchart
2025-06-09 13:40 ` Mark Brown
1 sibling, 0 replies; 3+ messages in thread
From: Laurent Pinchart @ 2025-05-27 12:15 UTC (permalink / raw)
To: Dan Carpenter
Cc: Cosmin Tanislav, Liam Girdwood, Mark Brown, linux-kernel,
kernel-janitors
Hi Dan,
Thank you for the patch.
On Tue, May 27, 2025 at 08:44:14AM +0300, Dan Carpenter wrote:
> There is a missing call to of_node_put() if devm_kcalloc() fails.
> Fix this by changing the code to use cleanup.h magic to drop the
> refcount.
>
> Fixes: 6b0cd72757c6 ("regulator: max20086: fix invalid memory access")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> drivers/regulator/max20086-regulator.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/regulator/max20086-regulator.c b/drivers/regulator/max20086-regulator.c
> index b4fe76e33ff2..fcdd2d0317a5 100644
> --- a/drivers/regulator/max20086-regulator.c
> +++ b/drivers/regulator/max20086-regulator.c
> @@ -5,6 +5,7 @@
> // Copyright (C) 2022 Laurent Pinchart <laurent.pinchart@idesonboard.com>
> // Copyright (C) 2018 Avnet, Inc.
>
> +#include <linux/cleanup.h>
> #include <linux/err.h>
> #include <linux/gpio/consumer.h>
> #include <linux/i2c.h>
> @@ -133,11 +134,11 @@ static int max20086_regulators_register(struct max20086 *chip)
> static int max20086_parse_regulators_dt(struct max20086 *chip, bool *boot_on)
> {
> struct of_regulator_match *matches;
> - struct device_node *node;
> unsigned int i;
> int ret;
>
> - node = of_get_child_by_name(chip->dev->of_node, "regulators");
> + struct device_node *node __free(device_node) =
> + of_get_child_by_name(chip->dev->of_node, "regulators");
> if (!node) {
> dev_err(chip->dev, "regulators node not found\n");
> return -ENODEV;
> @@ -153,7 +154,6 @@ static int max20086_parse_regulators_dt(struct max20086 *chip, bool *boot_on)
>
> ret = of_regulator_match(chip->dev, node, matches,
> chip->info->num_outputs);
> - of_node_put(node);
> if (ret < 0) {
> dev_err(chip->dev, "Failed to match regulators\n");
> return -EINVAL;
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt()
2025-05-27 5:44 [PATCH] regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt() Dan Carpenter
2025-05-27 12:15 ` Laurent Pinchart
@ 2025-06-09 13:40 ` Mark Brown
1 sibling, 0 replies; 3+ messages in thread
From: Mark Brown @ 2025-06-09 13:40 UTC (permalink / raw)
To: Cosmin Tanislav, Dan Carpenter
Cc: Laurent Pinchart, Liam Girdwood, linux-kernel, kernel-janitors
On Tue, 27 May 2025 08:44:14 +0300, Dan Carpenter wrote:
> There is a missing call to of_node_put() if devm_kcalloc() fails.
> Fix this by changing the code to use cleanup.h magic to drop the
> refcount.
>
>
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next
Thanks!
[1/1] regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt()
commit: 06118ae36855b7d3d22688298e74a766ccf0cb7a
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-06-09 13:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-27 5:44 [PATCH] regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt() Dan Carpenter
2025-05-27 12:15 ` Laurent Pinchart
2025-06-09 13:40 ` Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®