+++ /dev/null
-From 5fd4966c1caea8556e7282bd687faa91ec91deb5 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 6 Mar 2023 08:56:39 +0100
-Subject: interconnect: qcom: msm8974: fix registration race
-
-From: Johan Hovold <johan+linaro@kernel.org>
-
-[ Upstream commit bfe7bcd2b9f5215de2144f097f39971180e7ea54 ]
-
-The current interconnect provider registration interface is inherently
-racy as nodes are not added until the after adding the provider. This
-can specifically cause racing DT lookups to fail.
-
-Switch to using the new API where the provider is not registered until
-after it has been fully initialised.
-
-Fixes: 4e60a9568dc6 ("interconnect: qcom: add msm8974 driver")
-Cc: stable@vger.kernel.org # 5.5
-Reviewed-by: Brian Masney <bmasney@redhat.com>
-Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
-Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
-Link: https://lore.kernel.org/r/20230306075651.2449-12-johan+linaro@kernel.org
-Signed-off-by: Georgi Djakov <djakov@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/interconnect/qcom/msm8974.c | 22 ++++++++++------------
- 1 file changed, 10 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/interconnect/qcom/msm8974.c b/drivers/interconnect/qcom/msm8974.c
-index da68ce375a89d..e1489930191d2 100644
---- a/drivers/interconnect/qcom/msm8974.c
-+++ b/drivers/interconnect/qcom/msm8974.c
-@@ -692,7 +692,6 @@ static int msm8974_icc_probe(struct platform_device *pdev)
- return ret;
-
- provider = &qp->provider;
-- INIT_LIST_HEAD(&provider->nodes);
- provider->dev = dev;
- provider->set = msm8974_icc_set;
- provider->aggregate = icc_std_aggregate;
-@@ -700,11 +699,7 @@ static int msm8974_icc_probe(struct platform_device *pdev)
- provider->data = data;
- provider->get_bw = msm8974_get_bw;
-
-- ret = icc_provider_add(provider);
-- if (ret) {
-- dev_err(dev, "error adding interconnect provider: %d\n", ret);
-- goto err_disable_clks;
-- }
-+ icc_provider_init(provider);
-
- for (i = 0; i < num_nodes; i++) {
- size_t j;
-@@ -712,7 +707,7 @@ static int msm8974_icc_probe(struct platform_device *pdev)
- node = icc_node_create(qnodes[i]->id);
- if (IS_ERR(node)) {
- ret = PTR_ERR(node);
-- goto err_del_icc;
-+ goto err_remove_nodes;
- }
-
- node->name = qnodes[i]->name;
-@@ -729,15 +724,16 @@ static int msm8974_icc_probe(struct platform_device *pdev)
- }
- data->num_nodes = num_nodes;
-
-+ ret = icc_provider_register(provider);
-+ if (ret)
-+ goto err_remove_nodes;
-+
- platform_set_drvdata(pdev, qp);
-
- return 0;
-
--err_del_icc:
-+err_remove_nodes:
- icc_nodes_remove(provider);
-- icc_provider_del(provider);
--
--err_disable_clks:
- clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
-
- return ret;
-@@ -747,9 +743,11 @@ static int msm8974_icc_remove(struct platform_device *pdev)
- {
- struct msm8974_icc_provider *qp = platform_get_drvdata(pdev);
-
-+ icc_provider_deregister(&qp->provider);
- icc_nodes_remove(&qp->provider);
- clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
-- return icc_provider_del(&qp->provider);
-+
-+ return 0;
- }
-
- static const struct of_device_id msm8974_noc_of_match[] = {
---
-2.39.2
-
tty-serial-fsl_lpuart-fix-race-on-rx-dma-shutdown.patch
serial-8250-serial_8250_aspeed_vuart-should-depend-o.patch
serial-8250-aspeed_vuart-select-regmap-instead-of-de.patch
-interconnect-qcom-msm8974-fix-registration-race.patch
drm-sun4i-fix-missing-component-unbind-on-bind-error.patch
net-tls-fix-possible-race-condition-between-do_tls_g.patch
power-supply-bq24190_charger-using-pm_runtime_resume.patch
+++ /dev/null
-From 92015aa453274281fe320010b17d87d74fb43b68 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 6 Mar 2023 08:56:39 +0100
-Subject: interconnect: qcom: msm8974: fix registration race
-
-From: Johan Hovold <johan+linaro@kernel.org>
-
-[ Upstream commit bfe7bcd2b9f5215de2144f097f39971180e7ea54 ]
-
-The current interconnect provider registration interface is inherently
-racy as nodes are not added until the after adding the provider. This
-can specifically cause racing DT lookups to fail.
-
-Switch to using the new API where the provider is not registered until
-after it has been fully initialised.
-
-Fixes: 4e60a9568dc6 ("interconnect: qcom: add msm8974 driver")
-Cc: stable@vger.kernel.org # 5.5
-Reviewed-by: Brian Masney <bmasney@redhat.com>
-Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
-Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
-Link: https://lore.kernel.org/r/20230306075651.2449-12-johan+linaro@kernel.org
-Signed-off-by: Georgi Djakov <djakov@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/interconnect/qcom/msm8974.c | 22 ++++++++++------------
- 1 file changed, 10 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/interconnect/qcom/msm8974.c b/drivers/interconnect/qcom/msm8974.c
-index da68ce375a89d..e1489930191d2 100644
---- a/drivers/interconnect/qcom/msm8974.c
-+++ b/drivers/interconnect/qcom/msm8974.c
-@@ -692,7 +692,6 @@ static int msm8974_icc_probe(struct platform_device *pdev)
- return ret;
-
- provider = &qp->provider;
-- INIT_LIST_HEAD(&provider->nodes);
- provider->dev = dev;
- provider->set = msm8974_icc_set;
- provider->aggregate = icc_std_aggregate;
-@@ -700,11 +699,7 @@ static int msm8974_icc_probe(struct platform_device *pdev)
- provider->data = data;
- provider->get_bw = msm8974_get_bw;
-
-- ret = icc_provider_add(provider);
-- if (ret) {
-- dev_err(dev, "error adding interconnect provider: %d\n", ret);
-- goto err_disable_clks;
-- }
-+ icc_provider_init(provider);
-
- for (i = 0; i < num_nodes; i++) {
- size_t j;
-@@ -712,7 +707,7 @@ static int msm8974_icc_probe(struct platform_device *pdev)
- node = icc_node_create(qnodes[i]->id);
- if (IS_ERR(node)) {
- ret = PTR_ERR(node);
-- goto err_del_icc;
-+ goto err_remove_nodes;
- }
-
- node->name = qnodes[i]->name;
-@@ -729,15 +724,16 @@ static int msm8974_icc_probe(struct platform_device *pdev)
- }
- data->num_nodes = num_nodes;
-
-+ ret = icc_provider_register(provider);
-+ if (ret)
-+ goto err_remove_nodes;
-+
- platform_set_drvdata(pdev, qp);
-
- return 0;
-
--err_del_icc:
-+err_remove_nodes:
- icc_nodes_remove(provider);
-- icc_provider_del(provider);
--
--err_disable_clks:
- clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
-
- return ret;
-@@ -747,9 +743,11 @@ static int msm8974_icc_remove(struct platform_device *pdev)
- {
- struct msm8974_icc_provider *qp = platform_get_drvdata(pdev);
-
-+ icc_provider_deregister(&qp->provider);
- icc_nodes_remove(&qp->provider);
- clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
-- return icc_provider_del(&qp->provider);
-+
-+ return 0;
- }
-
- static const struct of_device_id msm8974_noc_of_match[] = {
---
-2.39.2
-
+++ /dev/null
-From f2af30bfe98d839c192d36dfbebde92e99e297ed Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 6 Mar 2023 08:56:38 +0100
-Subject: interconnect: qcom: rpmh: fix registration race
-
-From: Johan Hovold <johan+linaro@kernel.org>
-
-[ Upstream commit 74240a5bebd48d8b843c6d0f1acfaa722a5abeb7 ]
-
-The current interconnect provider registration interface is inherently
-racy as nodes are not added until the after adding the provider. This
-can specifically cause racing DT lookups to fail.
-
-Switch to using the new API where the provider is not registered until
-after it has been fully initialised.
-
-Fixes: 976daac4a1c5 ("interconnect: qcom: Consolidate interconnect RPMh support")
-Cc: stable@vger.kernel.org # 5.7
-Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
-Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
-Link: https://lore.kernel.org/r/20230306075651.2449-11-johan+linaro@kernel.org
-Signed-off-by: Georgi Djakov <djakov@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/interconnect/qcom/icc-rpmh.c | 23 ++++++++++++++---------
- 1 file changed, 14 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/interconnect/qcom/icc-rpmh.c b/drivers/interconnect/qcom/icc-rpmh.c
-index 2c8e12549804b..c51c39754f4b1 100644
---- a/drivers/interconnect/qcom/icc-rpmh.c
-+++ b/drivers/interconnect/qcom/icc-rpmh.c
-@@ -216,9 +216,10 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
- provider->pre_aggregate = qcom_icc_pre_aggregate;
- provider->aggregate = qcom_icc_aggregate;
- provider->xlate_extended = qcom_icc_xlate_extended;
-- INIT_LIST_HEAD(&provider->nodes);
- provider->data = data;
-
-+ icc_provider_init(provider);
-+
- qp->dev = dev;
- qp->bcms = desc->bcms;
- qp->num_bcms = desc->num_bcms;
-@@ -227,10 +228,6 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
- if (IS_ERR(qp->voter))
- return PTR_ERR(qp->voter);
-
-- ret = icc_provider_add(provider);
-- if (ret)
-- return ret;
--
- for (i = 0; i < qp->num_bcms; i++)
- qcom_icc_bcm_init(qp->bcms[i], dev);
-
-@@ -242,7 +239,7 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
- node = icc_node_create(qn->id);
- if (IS_ERR(node)) {
- ret = PTR_ERR(node);
-- goto err;
-+ goto err_remove_nodes;
- }
-
- node->name = qn->name;
-@@ -256,12 +253,18 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
- }
-
- data->num_nodes = num_nodes;
-+
-+ ret = icc_provider_register(provider);
-+ if (ret)
-+ goto err_remove_nodes;
-+
- platform_set_drvdata(pdev, qp);
-
- return 0;
--err:
-+
-+err_remove_nodes:
- icc_nodes_remove(provider);
-- icc_provider_del(provider);
-+
- return ret;
- }
- EXPORT_SYMBOL_GPL(qcom_icc_rpmh_probe);
-@@ -270,8 +273,10 @@ int qcom_icc_rpmh_remove(struct platform_device *pdev)
- {
- struct qcom_icc_provider *qp = platform_get_drvdata(pdev);
-
-+ icc_provider_deregister(&qp->provider);
- icc_nodes_remove(&qp->provider);
-- return icc_provider_del(&qp->provider);
-+
-+ return 0;
- }
- EXPORT_SYMBOL_GPL(qcom_icc_rpmh_remove);
-
---
-2.39.2
-
tty-serial-fsl_lpuart-fix-race-on-rx-dma-shutdown.patch
serial-8250-serial_8250_aspeed_vuart-should-depend-o.patch
serial-8250-aspeed_vuart-select-regmap-instead-of-de.patch
-interconnect-qcom-rpmh-fix-registration-race.patch
-interconnect-qcom-msm8974-fix-registration-race.patch
kthread-add-the-helper-function-kthread_run_on_cpu.patch
trace-hwlat-make-use-of-the-helper-function-kthread_.patch
trace-hwlat-do-not-start-per-cpu-thread-if-it-is-alr.patch