aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm/msm_debugfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/msm/msm_debugfs.c')
-rw-r--r--drivers/gpu/drm/msm/msm_debugfs.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_debugfs.c
index f0da0d3c8a80..d756436c1fcd 100644
--- a/drivers/gpu/drm/msm/msm_debugfs.c
+++ b/drivers/gpu/drm/msm/msm_debugfs.c
@@ -84,7 +84,7 @@ static int msm_gpu_open(struct inode *inode, struct file *file)
84 84
85 ret = mutex_lock_interruptible(&dev->struct_mutex); 85 ret = mutex_lock_interruptible(&dev->struct_mutex);
86 if (ret) 86 if (ret)
87 return ret; 87 goto free_priv;
88 88
89 pm_runtime_get_sync(&gpu->pdev->dev); 89 pm_runtime_get_sync(&gpu->pdev->dev);
90 show_priv->state = gpu->funcs->gpu_state_get(gpu); 90 show_priv->state = gpu->funcs->gpu_state_get(gpu);
@@ -94,13 +94,20 @@ static int msm_gpu_open(struct inode *inode, struct file *file)
94 94
95 if (IS_ERR(show_priv->state)) { 95 if (IS_ERR(show_priv->state)) {
96 ret = PTR_ERR(show_priv->state); 96 ret = PTR_ERR(show_priv->state);
97 kfree(show_priv); 97 goto free_priv;
98 return ret;
99 } 98 }
100 99
101 show_priv->dev = dev; 100 show_priv->dev = dev;
102 101
103 return single_open(file, msm_gpu_show, show_priv); 102 ret = single_open(file, msm_gpu_show, show_priv);
103 if (ret)
104 goto free_priv;
105
106 return 0;
107
108free_priv:
109 kfree(show_priv);
110 return ret;
104} 111}
105 112
106static const struct file_operations msm_gpu_fops = { 113static const struct file_operations msm_gpu_fops = {