On 11/2/26 8:00 PM, Rob Clark wrote:
We need to move the gpu lock around a bit for the next patch.  Use
scoped_guard/etc so we don't have to make the error path handling more
complicated.

Signed-off-by: Rob Clark <[email protected]>
---
  drivers/gpu/drm/msm/msm_debugfs.c | 31 ++++++++++++-------------------
  1 file changed, 12 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_debugfs.c 
b/drivers/gpu/drm/msm/msm_debugfs.c
index f12701e286ec..aa59b28a3392 100644
--- a/drivers/gpu/drm/msm/msm_debugfs.c
+++ b/drivers/gpu/drm/msm/msm_debugfs.c
@@ -70,43 +70,36 @@ static int msm_gpu_open(struct inode *inode, struct file 
*file)
        struct drm_device *dev = inode->i_private;
        struct msm_drm_private *priv = dev->dev_private;
        struct msm_gpu *gpu = priv->gpu;
-       struct msm_gpu_show_priv *show_priv;
        int ret;
if (!gpu || !gpu->funcs->gpu_state_get)
                return -ENODEV;
- show_priv = kmalloc_obj(*show_priv);
+       struct msm_gpu_show_priv *show_priv __free(kfree)
+               = kmalloc_obj(*show_priv);
        if (!show_priv)
                return -ENOMEM;
- ret = mutex_lock_interruptible(&gpu->lock);
-       if (ret)
-               goto free_priv;
-
-       pm_runtime_get_sync(&gpu->pdev->dev);
-       msm_gpu_hw_init(gpu);
-       show_priv->state = gpu->funcs->gpu_state_get(gpu);
-       pm_runtime_put_sync(&gpu->pdev->dev);
-
-       mutex_unlock(&gpu->lock);
+       scoped_guard (pm_runtime_active, &gpu->pdev->dev) {
+               scoped_cond_guard (mutex_intr, return -EINTR, &gpu->lock) {
+                       msm_gpu_hw_init(gpu);
+                       show_priv->state = gpu->funcs->gpu_state_get(gpu);
+               }
+       }
if (IS_ERR(show_priv->state)) {
-               ret = PTR_ERR(show_priv->state);
-               goto free_priv;
+               return PTR_ERR(show_priv->state);
        }
show_priv->dev = dev; ret = single_open(file, msm_gpu_show, show_priv);
        if (ret)
-               goto free_priv;
+               return ret;
- return 0;
+       retain_and_null_ptr(show_priv);
-free_priv:
-       kfree(show_priv);
-       return ret;
+       return 0;
  }
static const struct file_operations msm_gpu_fops = {

Reviewed-by: Anna Maniscalco <[email protected]>

Best regards,
--
Anna Maniscalco <[email protected]>

Reply via email to