FAILED: patch "[PATCH] slimbus: qcom-ngd-ctrl: Fix up platform_driver registration" failed to apply to 6.6-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.6.y
git checkout FETCH_HEAD
git cherry-pick -x 8663e8334d7b6007f5d8a4e5dd270246f35107a6
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026061517-legume-grieving-bb5f@gregkh' --subject-prefix 'PATCH 6.6.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8663e8334d7b6007f5d8a4e5dd270246f35107a6 Mon Sep 17 00:00:00 2001
From: Bjorn Andersson <[email protected]>
Date: Sat, 30 May 2026 21:44:15 +0100
Subject: [PATCH] slimbus: qcom-ngd-ctrl: Fix up platform_driver registration
Device drivers should not invoke platform_driver_register()/unregister() in their probe and remove paths. They should further not rely on platform_driver_unregister() as their only means of "deleting" their child devices.
Introduce a helper to unregister the child device and move the platform_driver_register()/unregister() to module_init()/exit().
drivers/slimbus/qcom-ngd-ctrl.c +33 -3
@@ -1560,6 +1560,13 @@ static int of_qcom_slim_ngd_register(struct device *parent,return -ENODEV ; } +static void qcom_slim_ngd_unregister (struct qcom_slim_ngd_ctrl *ctrl) +{ +struct qcom_slim_ngd *ngd = ctrl->ngd; + +platform_device_del (ngd->pdev); +} +static int qcom_slim_ngd_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev;
@@ -1662,7 +1669,6 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev) goto err_pdr_lookup; } -platform_driver_register (&qcom_slim_ngd_driver);return of_qcom_slim_ngd_register (dev, ctrl); err_pdr_alloc:
@@ -1676,7 +1682,9 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev)static void qcom_slim_ngd_ctrl_remove (struct platform_device *pdev) { -platform_driver_unregister (&qcom_slim_ngd_driver); +struct qcom_slim_ngd_ctrl *ctrl =platform_get_drvdata (pdev); + +qcom_slim_ngd_unregister (ctrl); }static void qcom_slim_ngd_remove (struct platform_device *pdev)
@@ -1752,6 +1760,28 @@ static struct platform_driver qcom_slim_ngd_driver = { }, }; -module_platform_driver (qcom_slim_ngd_ctrl_driver); +static int qcom_slim_ngd_init (void ) +{ +int ret; + + ret =platform_driver_register (&qcom_slim_ngd_driver); +if (ret) +return ret; + + ret =platform_driver_register (&qcom_slim_ngd_ctrl_driver); +if (ret) +platform_driver_unregister (&qcom_slim_ngd_driver); + +return ret; +} + +static void qcom_slim_ngd_exit (void ) +{ +platform_driver_unregister (&qcom_slim_ngd_ctrl_driver); +platform_driver_unregister (&qcom_slim_ngd_driver); +} + +module_init (qcom_slim_ngd_init); +module_exit (qcom_slim_ngd_exit);MODULE_LICENSE ("GPL v2" );MODULE_DESCRIPTION ("Qualcomm SLIMBus NGD controller" );
Sasha Levin
maintainerPATCH 1/1 slimbus: qcom-ngd-ctrl: Fix up platform_driver registration
From: Bjorn Andersson <[email protected]>
[ Upstream commit 8663e8334d7b6007f5d8a4e5dd270246f35107a6 ]
Device drivers should not invoke platform_driver_register()/unregister() in their probe and remove paths. They should further not rely on platform_driver_unregister() as their only means of "deleting" their child devices.
Introduce a helper to unregister the child device and move the platform_driver_register()/unregister() to module_init()/exit().
--- drivers/slimbus/qcom-ngd-ctrl.c | 36 ++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-)
drivers/slimbus/qcom-ngd-ctrl.c +33 -3
@@ -1564,6 +1564,13 @@ static int of_qcom_slim_ngd_register(struct device *parent,return -ENODEV ; } +static void qcom_slim_ngd_unregister (struct qcom_slim_ngd_ctrl *ctrl) +{ +struct qcom_slim_ngd *ngd = ctrl->ngd; + +platform_device_del (ngd->pdev); +} +static int qcom_slim_ngd_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev;
@@ -1666,7 +1673,6 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev) goto err_pdr_lookup; } -platform_driver_register (&qcom_slim_ngd_driver);return of_qcom_slim_ngd_register (dev, ctrl); err_pdr_alloc:
@@ -1680,7 +1686,9 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev)static int qcom_slim_ngd_ctrl_remove (struct platform_device *pdev) { -platform_driver_unregister (&qcom_slim_ngd_driver); +struct qcom_slim_ngd_ctrl *ctrl =platform_get_drvdata (pdev); + +qcom_slim_ngd_unregister (ctrl);return 0 ; }
@@ -1759,6 +1767,28 @@ static struct platform_driver qcom_slim_ngd_driver = { }, }; -module_platform_driver (qcom_slim_ngd_ctrl_driver); +static int qcom_slim_ngd_init (void ) +{ +int ret; + + ret =platform_driver_register (&qcom_slim_ngd_driver); +if (ret) +return ret; + + ret =platform_driver_register (&qcom_slim_ngd_ctrl_driver); +if (ret) +platform_driver_unregister (&qcom_slim_ngd_driver); + +return ret; +} + +static void qcom_slim_ngd_exit (void ) +{ +platform_driver_unregister (&qcom_slim_ngd_ctrl_driver); +platform_driver_unregister (&qcom_slim_ngd_driver); +} + +module_init (qcom_slim_ngd_init); +module_exit (qcom_slim_ngd_exit);MODULE_LICENSE ("GPL v2" );MODULE_DESCRIPTION ("Qualcomm SLIMBus NGD controller" );
Signature · 1 line
2.53.0