[PATCH] firmware: meson_sm: fix device leak at probe

Johan Hovold posted 1 patch 2 months, 1 week ago
drivers/firmware/meson/meson_sm.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
[PATCH] firmware: meson_sm: fix device leak at probe
Posted by Johan Hovold 2 months, 1 week ago
Make sure to drop the reference to the secure monitor device taken by
of_find_device_by_node() when looking up its driver data on behalf of
other drivers (e.g. during probe).

Note that holding a reference to the platform device does not prevent
its driver data from going away so there is no point in keeping the
reference after the helper returns.

Fixes: 8cde3c2153e8 ("firmware: meson_sm: Rework driver as a proper platform driver")
Cc: stable@vger.kernel.org	# 5.5
Cc: Carlo Caione <ccaione@baylibre.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
 drivers/firmware/meson/meson_sm.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/firmware/meson/meson_sm.c b/drivers/firmware/meson/meson_sm.c
index f25a9746249b..3ab67aaa9e5d 100644
--- a/drivers/firmware/meson/meson_sm.c
+++ b/drivers/firmware/meson/meson_sm.c
@@ -232,11 +232,16 @@ EXPORT_SYMBOL(meson_sm_call_write);
 struct meson_sm_firmware *meson_sm_get(struct device_node *sm_node)
 {
 	struct platform_device *pdev = of_find_device_by_node(sm_node);
+	struct meson_sm_firmware *fw;
 
 	if (!pdev)
 		return NULL;
 
-	return platform_get_drvdata(pdev);
+	fw = platform_get_drvdata(pdev);
+
+	put_device(&pdev->dev);
+
+	return fw;
 }
 EXPORT_SYMBOL_GPL(meson_sm_get);
 
-- 
2.49.1
Re: [PATCH] firmware: meson_sm: fix device leak at probe
Posted by Martin Blumenstingl 2 months ago
On Fri, Jul 25, 2025 at 9:41 AM Johan Hovold <johan@kernel.org> wrote:
>
> Make sure to drop the reference to the secure monitor device taken by
> of_find_device_by_node() when looking up its driver data on behalf of
> other drivers (e.g. during probe).
>
> Note that holding a reference to the platform device does not prevent
> its driver data from going away so there is no point in keeping the
> reference after the helper returns.
>
> Fixes: 8cde3c2153e8 ("firmware: meson_sm: Rework driver as a proper platform driver")
> Cc: stable@vger.kernel.org      # 5.5
> Cc: Carlo Caione <ccaione@baylibre.com>
> Signed-off-by: Johan Hovold <johan@kernel.org>
Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Re: [PATCH] firmware: meson_sm: fix device leak at probe
Posted by Markus Elfring 2 months ago
> Make sure to drop the reference to the secure monitor device taken by
> of_find_device_by_node() when looking up its driver data on behalf of
> other drivers (e.g. during probe).
…

How do you think about to use the attribute “put_device” for this purpose?
https://elixir.bootlin.com/linux/v6.16/source/include/linux/device.h#L1140

Regards,
Markus
Re: [PATCH] firmware: meson_sm: fix device leak at probe
Posted by Neil Armstrong 1 month ago
Hi,

On Fri, 25 Jul 2025 09:40:19 +0200, Johan Hovold wrote:
> Make sure to drop the reference to the secure monitor device taken by
> of_find_device_by_node() when looking up its driver data on behalf of
> other drivers (e.g. during probe).
> 
> Note that holding a reference to the platform device does not prevent
> its driver data from going away so there is no point in keeping the
> reference after the helper returns.
> 
> [...]

Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v6.18/drivers)

[1/1] firmware: meson_sm: fix device leak at probe
      https://git.kernel.org/amlogic/c/8ece3173f87df03935906d0c612c2aeda9db92ca

These changes has been applied on the intermediate git tree [1].

The v6.18/drivers branch will then be sent via a formal Pull Request to the Linux SoC maintainers
for inclusion in their intermediate git branches in order to be sent to Linus during
the next merge window, or sooner if it's a set of fixes.

In the cases of fixes, those will be merged in the current release candidate
kernel and as soon they appear on the Linux master branch they will be
backported to the previous Stable and Long-Stable kernels [2].

The intermediate git branches are merged daily in the linux-next tree [3],
people are encouraged testing these pre-release kernels and report issues on the
relevant mailing-lists.

If problems are discovered on those changes, please submit a signed-off-by revert
patch followed by a corrective changeset.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

-- 
Neil
Re: [PATCH] firmware: meson_sm: fix device leak at probe
Posted by Johan Hovold 1 month, 1 week ago
On Fri, Jul 25, 2025 at 09:40:19AM +0200, Johan Hovold wrote:
> Make sure to drop the reference to the secure monitor device taken by
> of_find_device_by_node() when looking up its driver data on behalf of
> other drivers (e.g. during probe).
> 
> Note that holding a reference to the platform device does not prevent
> its driver data from going away so there is no point in keeping the
> reference after the helper returns.
> 
> Fixes: 8cde3c2153e8 ("firmware: meson_sm: Rework driver as a proper platform driver")
> Cc: stable@vger.kernel.org	# 5.5
> Cc: Carlo Caione <ccaione@baylibre.com>
> Signed-off-by: Johan Hovold <johan@kernel.org>

Can someone pick this one up (along with the compile-test patch)?

Johan
Re: [PATCH] firmware: meson_sm: fix device leak at probe
Posted by Neil Armstrong 1 month ago
On 27/08/2025 11:50, Johan Hovold wrote:
> On Fri, Jul 25, 2025 at 09:40:19AM +0200, Johan Hovold wrote:
>> Make sure to drop the reference to the secure monitor device taken by
>> of_find_device_by_node() when looking up its driver data on behalf of
>> other drivers (e.g. during probe).
>>
>> Note that holding a reference to the platform device does not prevent
>> its driver data from going away so there is no point in keeping the
>> reference after the helper returns.
>>
>> Fixes: 8cde3c2153e8 ("firmware: meson_sm: Rework driver as a proper platform driver")
>> Cc: stable@vger.kernel.org	# 5.5
>> Cc: Carlo Caione <ccaione@baylibre.com>
>> Signed-off-by: Johan Hovold <johan@kernel.org>
> 
> Can someone pick this one up (along with the compile-test patch)?

I'll pick it.

Neil

> 
> Johan