]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/msm/gpu: Drop qos request if devm_devfreq_add_device() fails
authorBjorn Andersson <bjorn.andersson@linaro.org>
Fri, 8 Jul 2022 16:26:32 +0000 (09:26 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Sep 2022 09:23:57 +0000 (11:23 +0200)
[ Upstream commit 02b9f2636209beb843ca501d47f7fddc8792b2d7 ]

In the event that devm_devfreq_add_device() fails the device's qos freq
list is left referencing df->idle_freq and df->boost_freq. Attempting to
initialize devfreq again after a probe deferral will then cause invalid
memory accesses in dev_pm_qos_add_request().

Fix this by dropping the requests in the error path.

Fixes: 7c0ffcd40b16 ("drm/msm/gpu: Respect PM QoS constraints")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/493001/
Link: https://lore.kernel.org/r/20220708162632.3529864-1-bjorn.andersson@linaro.org
Signed-off-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/msm/msm_gpu_devfreq.c

index ea94bc18e72ebcd3109219c90454c0aabafc5d70..89cc93eb675578061c3695b915bd5a306e412683 100644 (file)
@@ -213,6 +213,8 @@ void msm_devfreq_init(struct msm_gpu *gpu)
 
        if (IS_ERR(df->devfreq)) {
                DRM_DEV_ERROR(&gpu->pdev->dev, "Couldn't initialize GPU devfreq\n");
+               dev_pm_qos_remove_request(&df->idle_freq);
+               dev_pm_qos_remove_request(&df->boost_freq);
                df->devfreq = NULL;
                return;
        }