mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
Merge branch 'icc-platform-remove' into icc-next
* icc-platform-remove
interconnect: qcom: Make qnoc_remove return void
interconnect: imx8mm: Convert to platform remove callback returning void
interconnect: imx8mn: Convert to platform remove callback returning void
interconnect: imx8mp: Convert to platform remove callback returning void
interconnect: imx8mq: Convert to platform remove callback returning void
interconnect: qcom/msm8974: Convert to platform remove callback returning void
interconnect: qcom/osm-l3: Convert to platform remove callback returning void
interconnect: qcom/smd-rpm: Convert to platform remove callback returning void
interconnect: exynos: Convert to platform remove callback returning void
This series converts all platform drivers below drivers/interconnect to
use .remove_new(). Compared to the traditional .remove() callback
.remove_new() returns no value. This is a good thing because the driver
core doesn't (and cannot) cope for errors during remove. The only effect
of a non-zero return value in .remove() is that the driver core emits a
warning. The device is removed anyhow and an early return from .remove()
usually yields resource leaks and/or use-after-free bugs.
See commit 5c5a7680e6
("platform: Provide a remove callback that
returns no value") for an extended explanation and the eventual goal.
All drivers converted here already returned zero unconditionally in
.remove(), so they are converted here trivially. The imx drivers could
be slightly simplified, because the remove callback only called a single
function with the same prototype as .remove_new().
Link: https://lore.kernel.org/r/20231031222851.3126434-11-u.kleine-koenig@pengutronix.de
Signed-off-by: Georgi Djakov <djakov@kernel.org>
This commit is contained in:
commit
70ad2111d0
16 changed files with 20 additions and 58 deletions
|
@ -86,16 +86,9 @@ static int imx8mm_icc_probe(struct platform_device *pdev)
|
|||
return imx_icc_register(pdev, nodes, ARRAY_SIZE(nodes), NULL);
|
||||
}
|
||||
|
||||
static int imx8mm_icc_remove(struct platform_device *pdev)
|
||||
{
|
||||
imx_icc_unregister(pdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver imx8mm_icc_driver = {
|
||||
.probe = imx8mm_icc_probe,
|
||||
.remove = imx8mm_icc_remove,
|
||||
.remove_new = imx_icc_unregister,
|
||||
.driver = {
|
||||
.name = "imx8mm-interconnect",
|
||||
},
|
||||
|
|
|
@ -75,16 +75,9 @@ static int imx8mn_icc_probe(struct platform_device *pdev)
|
|||
return imx_icc_register(pdev, nodes, ARRAY_SIZE(nodes), NULL);
|
||||
}
|
||||
|
||||
static int imx8mn_icc_remove(struct platform_device *pdev)
|
||||
{
|
||||
imx_icc_unregister(pdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver imx8mn_icc_driver = {
|
||||
.probe = imx8mn_icc_probe,
|
||||
.remove = imx8mn_icc_remove,
|
||||
.remove_new = imx_icc_unregister,
|
||||
.driver = {
|
||||
.name = "imx8mn-interconnect",
|
||||
},
|
||||
|
|
|
@ -239,16 +239,9 @@ static int imx8mp_icc_probe(struct platform_device *pdev)
|
|||
return imx_icc_register(pdev, nodes, ARRAY_SIZE(nodes), noc_setting_nodes);
|
||||
}
|
||||
|
||||
static int imx8mp_icc_remove(struct platform_device *pdev)
|
||||
{
|
||||
imx_icc_unregister(pdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver imx8mp_icc_driver = {
|
||||
.probe = imx8mp_icc_probe,
|
||||
.remove = imx8mp_icc_remove,
|
||||
.remove_new = imx_icc_unregister,
|
||||
.driver = {
|
||||
.name = "imx8mp-interconnect",
|
||||
},
|
||||
|
|
|
@ -85,16 +85,9 @@ static int imx8mq_icc_probe(struct platform_device *pdev)
|
|||
return imx_icc_register(pdev, nodes, ARRAY_SIZE(nodes), NULL);
|
||||
}
|
||||
|
||||
static int imx8mq_icc_remove(struct platform_device *pdev)
|
||||
{
|
||||
imx_icc_unregister(pdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver imx8mq_icc_driver = {
|
||||
.probe = imx8mq_icc_probe,
|
||||
.remove = imx8mq_icc_remove,
|
||||
.remove_new = imx_icc_unregister,
|
||||
.driver = {
|
||||
.name = "imx8mq-interconnect",
|
||||
.sync_state = icc_sync_state,
|
||||
|
|
|
@ -627,14 +627,12 @@ int qnoc_probe(struct platform_device *pdev)
|
|||
}
|
||||
EXPORT_SYMBOL(qnoc_probe);
|
||||
|
||||
int qnoc_remove(struct platform_device *pdev)
|
||||
void qnoc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct qcom_icc_provider *qp = platform_get_drvdata(pdev);
|
||||
|
||||
icc_provider_deregister(&qp->provider);
|
||||
icc_nodes_remove(&qp->provider);
|
||||
clk_disable_unprepare(qp->bus_clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(qnoc_remove);
|
||||
|
|
|
@ -161,7 +161,7 @@ extern const struct rpm_clk_resource aggre1_branch_clk;
|
|||
extern const struct rpm_clk_resource aggre2_branch_clk;
|
||||
|
||||
int qnoc_probe(struct platform_device *pdev);
|
||||
int qnoc_remove(struct platform_device *pdev);
|
||||
void qnoc_remove(struct platform_device *pdev);
|
||||
|
||||
bool qcom_icc_rpm_smd_available(void);
|
||||
int qcom_icc_rpm_smd_send(int ctx, int rsc_type, int id, u32 val);
|
||||
|
|
|
@ -1344,7 +1344,7 @@ MODULE_DEVICE_TABLE(of, msm8916_noc_of_match);
|
|||
|
||||
static struct platform_driver msm8916_noc_driver = {
|
||||
.probe = qnoc_probe,
|
||||
.remove = qnoc_remove,
|
||||
.remove_new = qnoc_remove,
|
||||
.driver = {
|
||||
.name = "qnoc-msm8916",
|
||||
.of_match_table = msm8916_noc_of_match,
|
||||
|
|
|
@ -1421,7 +1421,7 @@ MODULE_DEVICE_TABLE(of, msm8939_noc_of_match);
|
|||
|
||||
static struct platform_driver msm8939_noc_driver = {
|
||||
.probe = qnoc_probe,
|
||||
.remove = qnoc_remove,
|
||||
.remove_new = qnoc_remove,
|
||||
.driver = {
|
||||
.name = "qnoc-msm8939",
|
||||
.of_match_table = msm8939_noc_of_match,
|
||||
|
|
|
@ -740,15 +740,13 @@ static int msm8974_icc_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int msm8974_icc_remove(struct platform_device *pdev)
|
||||
static void 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 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id msm8974_noc_of_match[] = {
|
||||
|
@ -764,7 +762,7 @@ MODULE_DEVICE_TABLE(of, msm8974_noc_of_match);
|
|||
|
||||
static struct platform_driver msm8974_noc_driver = {
|
||||
.probe = msm8974_icc_probe,
|
||||
.remove = msm8974_icc_remove,
|
||||
.remove_new = msm8974_icc_remove,
|
||||
.driver = {
|
||||
.name = "qnoc-msm8974",
|
||||
.of_match_table = msm8974_noc_of_match,
|
||||
|
|
|
@ -2108,7 +2108,7 @@ MODULE_DEVICE_TABLE(of, qnoc_of_match);
|
|||
|
||||
static struct platform_driver qnoc_driver = {
|
||||
.probe = qnoc_probe,
|
||||
.remove = qnoc_remove,
|
||||
.remove_new = qnoc_remove,
|
||||
.driver = {
|
||||
.name = "qnoc-msm8996",
|
||||
.of_match_table = qnoc_of_match,
|
||||
|
|
|
@ -148,14 +148,12 @@ static int qcom_osm_l3_set(struct icc_node *src, struct icc_node *dst)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int qcom_osm_l3_remove(struct platform_device *pdev)
|
||||
static void qcom_osm_l3_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct qcom_osm_l3_icc_provider *qp = platform_get_drvdata(pdev);
|
||||
|
||||
icc_provider_deregister(&qp->provider);
|
||||
icc_nodes_remove(&qp->provider);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int qcom_osm_l3_probe(struct platform_device *pdev)
|
||||
|
@ -292,7 +290,7 @@ MODULE_DEVICE_TABLE(of, osm_l3_of_match);
|
|||
|
||||
static struct platform_driver osm_l3_driver = {
|
||||
.probe = qcom_osm_l3_probe,
|
||||
.remove = qcom_osm_l3_remove,
|
||||
.remove_new = qcom_osm_l3_remove,
|
||||
.driver = {
|
||||
.name = "osm-l3",
|
||||
.of_match_table = osm_l3_of_match,
|
||||
|
|
|
@ -1367,7 +1367,7 @@ MODULE_DEVICE_TABLE(of, qcm2290_noc_of_match);
|
|||
|
||||
static struct platform_driver qcm2290_noc_driver = {
|
||||
.probe = qnoc_probe,
|
||||
.remove = qnoc_remove,
|
||||
.remove_new = qnoc_remove,
|
||||
.driver = {
|
||||
.name = "qnoc-qcm2290",
|
||||
.of_match_table = qcm2290_noc_of_match,
|
||||
|
|
|
@ -1083,7 +1083,7 @@ MODULE_DEVICE_TABLE(of, qcs404_noc_of_match);
|
|||
|
||||
static struct platform_driver qcs404_noc_driver = {
|
||||
.probe = qnoc_probe,
|
||||
.remove = qnoc_remove,
|
||||
.remove_new = qnoc_remove,
|
||||
.driver = {
|
||||
.name = "qnoc-qcs404",
|
||||
.of_match_table = qcs404_noc_of_match,
|
||||
|
|
|
@ -1714,7 +1714,7 @@ MODULE_DEVICE_TABLE(of, sdm660_noc_of_match);
|
|||
|
||||
static struct platform_driver sdm660_noc_driver = {
|
||||
.probe = qnoc_probe,
|
||||
.remove = qnoc_remove,
|
||||
.remove_new = qnoc_remove,
|
||||
.driver = {
|
||||
.name = "qnoc-sdm660",
|
||||
.of_match_table = sdm660_noc_of_match,
|
||||
|
|
|
@ -63,11 +63,9 @@ int qcom_icc_rpm_set_bus_rate(const struct rpm_clk_resource *clk, int ctx, u32 r
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(qcom_icc_rpm_set_bus_rate);
|
||||
|
||||
static int qcom_icc_rpm_smd_remove(struct platform_device *pdev)
|
||||
static void qcom_icc_rpm_smd_remove(struct platform_device *pdev)
|
||||
{
|
||||
icc_smd_rpm = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int qcom_icc_rpm_smd_probe(struct platform_device *pdev)
|
||||
|
@ -87,7 +85,7 @@ static struct platform_driver qcom_interconnect_rpm_smd_driver = {
|
|||
.name = "icc_smd_rpm",
|
||||
},
|
||||
.probe = qcom_icc_rpm_smd_probe,
|
||||
.remove = qcom_icc_rpm_smd_remove,
|
||||
.remove_new = qcom_icc_rpm_smd_remove,
|
||||
};
|
||||
module_platform_driver(qcom_interconnect_rpm_smd_driver);
|
||||
MODULE_AUTHOR("Georgi Djakov <georgi.djakov@linaro.org>");
|
||||
|
|
|
@ -93,14 +93,12 @@ static struct icc_node *exynos_generic_icc_xlate(struct of_phandle_args *spec,
|
|||
return priv->node;
|
||||
}
|
||||
|
||||
static int exynos_generic_icc_remove(struct platform_device *pdev)
|
||||
static void exynos_generic_icc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct exynos_icc_priv *priv = platform_get_drvdata(pdev);
|
||||
|
||||
icc_provider_deregister(&priv->provider);
|
||||
icc_nodes_remove(&priv->provider);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int exynos_generic_icc_probe(struct platform_device *pdev)
|
||||
|
@ -182,7 +180,7 @@ static struct platform_driver exynos_generic_icc_driver = {
|
|||
.sync_state = icc_sync_state,
|
||||
},
|
||||
.probe = exynos_generic_icc_probe,
|
||||
.remove = exynos_generic_icc_remove,
|
||||
.remove_new = exynos_generic_icc_remove,
|
||||
};
|
||||
module_platform_driver(exynos_generic_icc_driver);
|
||||
|
||||
|
|
Loading…
Reference in a new issue