aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
authorBjorn Andersson <bjorn.andersson@oss.qualcomm.com>2026-03-31 22:22:45 -0500
committerSrinivas Kandagatla <srini@kernel.org>2026-05-29 14:00:58 +0100
commitc395d822e6019e86f029766d2b47c374dfa22beb (patch)
treec3da195212c5c452ef1952e2a2bfebb6e3728146 /drivers
parent0dbd05bfc81c9cf649bff11606d373a0174c2f9d (diff)
downloadlinux-next-history-c395d822e6019e86f029766d2b47c374dfa22beb.tar.gz
slimbus: qcom-ngd-ctrl: Correct PDR and SSR cleanup ownership
PDR and SSR callbacks are registred from the controller probe function, but currently released from the child device's remove function. The remove() function should only be unwinding what was done in the same device's probe() function. Fixes: 917809e2280b ("slimbus: ngd: Add qcom SLIMBus NGD driver") Cc: stable@vger.kernel.org Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com> Signed-off-by: Srinivas Kandagatla <srini@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/slimbus/qcom-ngd-ctrl.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c
index 6b91a6f11cb66..e9238927cd2a0 100644
--- a/drivers/slimbus/qcom-ngd-ctrl.c
+++ b/drivers/slimbus/qcom-ngd-ctrl.c
@@ -1683,6 +1683,9 @@ static void qcom_slim_ngd_ctrl_remove(struct platform_device *pdev)
{
struct qcom_slim_ngd_ctrl *ctrl = platform_get_drvdata(pdev);
+ pdr_handle_release(ctrl->pdr);
+ qcom_unregister_ssr_notifier(ctrl->notifier, &ctrl->nb);
+
qcom_slim_ngd_unregister(ctrl);
}
@@ -1691,8 +1694,6 @@ static void qcom_slim_ngd_remove(struct platform_device *pdev)
struct qcom_slim_ngd_ctrl *ctrl = platform_get_drvdata(pdev);
pm_runtime_disable(&pdev->dev);
- pdr_handle_release(ctrl->pdr);
- qcom_unregister_ssr_notifier(ctrl->notifier, &ctrl->nb);
qcom_slim_ngd_enable(ctrl, false);
qcom_slim_ngd_exit_dma(ctrl);
qcom_slim_ngd_qmi_svc_event_deinit(&ctrl->qmi);