+++ /dev/null
-From stable+bounces-206025-greg=kroah.com@vger.kernel.org Tue Jan 6 20:18:15 2026
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 6 Jan 2026 13:26:54 -0500
-Subject: pmdomain: imx: Fix reference count leak in imx_gpc_probe()
-To: stable@vger.kernel.org
-Cc: Wentao Liang <vulab@iscas.ac.cn>, Frank Li <Frank.Li@nxp.com>, Ulf Hansson <ulf.hansson@linaro.org>, Sasha Levin <sashal@kernel.org>
-Message-ID: <20260106182656.3115094-3-sashal@kernel.org>
-
-From: Wentao Liang <vulab@iscas.ac.cn>
-
-[ Upstream commit 73cb5f6eafb0ac7aea8cdeb8ff12981aa741d8fb ]
-
-of_get_child_by_name() returns a node pointer with refcount incremented.
-Use the __free() attribute to manage the pgc_node reference, ensuring
-automatic of_node_put() cleanup when pgc_node goes out of scope.
-
-This eliminates the need for explicit error handling paths and avoids
-reference count leaks.
-
-Fixes: 721cabf6c660 ("soc: imx: move PGC handling to a new GPC driver")
-Cc: stable@vger.kernel.org
-Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
-Reviewed-by: Frank Li <Frank.Li@nxp.com>
-Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/soc/imx/gpc.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
---- a/drivers/soc/imx/gpc.c
-+++ b/drivers/soc/imx/gpc.c
-@@ -405,13 +405,12 @@ clk_err:
- static int imx_gpc_probe(struct platform_device *pdev)
- {
- const struct imx_gpc_dt_data *of_id_data = device_get_match_data(&pdev->dev);
-- struct device_node *pgc_node;
-+ struct device_node *pgc_node __free(device_node)
-+ = of_get_child_by_name(pdev->dev.of_node, "pgc");
- struct regmap *regmap;
- void __iomem *base;
- int ret;
-
-- pgc_node = of_get_child_by_name(pdev->dev.of_node, "pgc");
--
- /* bail out if DT too old and doesn't provide the necessary info */
- if (!of_property_read_bool(pdev->dev.of_node, "#power-domain-cells") &&
- !pgc_node)
+++ /dev/null
-From stable+bounces-206024-greg=kroah.com@vger.kernel.org Tue Jan 6 19:29:58 2026
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 6 Jan 2026 13:26:53 -0500
-Subject: pmdomain: Use device_get_match_data()
-To: stable@vger.kernel.org
-Cc: Rob Herring <robh@kernel.org>, Ulf Hansson <ulf.hansson@linaro.org>, Sasha Levin <sashal@kernel.org>
-Message-ID: <20260106182656.3115094-2-sashal@kernel.org>
-
-From: Rob Herring <robh@kernel.org>
-
-[ Upstream commit 3ba9fdfaa550936837b50b73d6c27ac401fde875 ]
-
-Use preferred device_get_match_data() instead of of_match_device() to
-get the driver match data. With this, adjust the includes to explicitly
-include the correct headers.
-
-Signed-off-by: Rob Herring <robh@kernel.org>
-Link: https://lore.kernel.org/r/20231006224614.444488-1-robh@kernel.org
-Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-Stable-dep-of: 73cb5f6eafb0 ("pmdomain: imx: Fix reference count leak in imx_gpc_probe()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/soc/actions/owl-sps.c | 16 +++++-----------
- drivers/soc/imx/gpc.c | 7 +++----
- drivers/soc/rockchip/pm_domains.c | 13 ++++---------
- 3 files changed, 12 insertions(+), 24 deletions(-)
-
---- a/drivers/soc/actions/owl-sps.c
-+++ b/drivers/soc/actions/owl-sps.c
-@@ -8,8 +8,10 @@
- * Copyright (c) 2017 Andreas Färber
- */
-
-+#include <linux/mod_devicetable.h>
- #include <linux/of_address.h>
--#include <linux/of_platform.h>
-+#include <linux/platform_device.h>
-+#include <linux/property.h>
- #include <linux/pm_domain.h>
- #include <linux/soc/actions/owl-sps.h>
- #include <dt-bindings/power/owl-s500-powergate.h>
-@@ -96,24 +98,16 @@ static int owl_sps_init_domain(struct ow
-
- static int owl_sps_probe(struct platform_device *pdev)
- {
-- const struct of_device_id *match;
- const struct owl_sps_info *sps_info;
- struct owl_sps *sps;
- int i, ret;
-
-- if (!pdev->dev.of_node) {
-- dev_err(&pdev->dev, "no device node\n");
-- return -ENODEV;
-- }
--
-- match = of_match_device(pdev->dev.driver->of_match_table, &pdev->dev);
-- if (!match || !match->data) {
-+ sps_info = device_get_match_data(&pdev->dev);
-+ if (!sps_info) {
- dev_err(&pdev->dev, "unknown compatible or missing data\n");
- return -EINVAL;
- }
-
-- sps_info = match->data;
--
- sps = devm_kzalloc(&pdev->dev,
- struct_size(sps, domains, sps_info->num_domains),
- GFP_KERNEL);
---- a/drivers/soc/imx/gpc.c
-+++ b/drivers/soc/imx/gpc.c
-@@ -7,9 +7,10 @@
- #include <linux/clk.h>
- #include <linux/delay.h>
- #include <linux/io.h>
--#include <linux/of_device.h>
-+#include <linux/of.h>
- #include <linux/platform_device.h>
- #include <linux/pm_domain.h>
-+#include <linux/property.h>
- #include <linux/regmap.h>
- #include <linux/regulator/consumer.h>
-
-@@ -403,9 +404,7 @@ clk_err:
-
- static int imx_gpc_probe(struct platform_device *pdev)
- {
-- const struct of_device_id *of_id =
-- of_match_device(imx_gpc_dt_ids, &pdev->dev);
-- const struct imx_gpc_dt_data *of_id_data = of_id->data;
-+ const struct imx_gpc_dt_data *of_id_data = device_get_match_data(&pdev->dev);
- struct device_node *pgc_node;
- struct regmap *regmap;
- void __iomem *base;
---- a/drivers/soc/rockchip/pm_domains.c
-+++ b/drivers/soc/rockchip/pm_domains.c
-@@ -8,11 +8,13 @@
- #include <linux/io.h>
- #include <linux/iopoll.h>
- #include <linux/err.h>
-+#include <linux/platform_device.h>
- #include <linux/pm_clock.h>
- #include <linux/pm_domain.h>
-+#include <linux/property.h>
-+#include <linux/of.h>
- #include <linux/of_address.h>
- #include <linux/of_clk.h>
--#include <linux/of_platform.h>
- #include <linux/clk.h>
- #include <linux/regmap.h>
- #include <linux/mfd/syscon.h>
-@@ -623,7 +625,6 @@ static int rockchip_pm_domain_probe(stru
- struct device_node *node;
- struct device *parent;
- struct rockchip_pmu *pmu;
-- const struct of_device_id *match;
- const struct rockchip_pmu_info *pmu_info;
- int error;
-
-@@ -632,13 +633,7 @@ static int rockchip_pm_domain_probe(stru
- return -ENODEV;
- }
-
-- match = of_match_device(dev->driver->of_match_table, dev);
-- if (!match || !match->data) {
-- dev_err(dev, "missing pmu data\n");
-- return -EINVAL;
-- }
--
-- pmu_info = match->data;
-+ pmu_info = device_get_match_data(dev);
-
- pmu = devm_kzalloc(dev,
- struct_size(pmu, domains, pmu_info->num_domains),