diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_debugfs.c')
-rw-r--r-- | drivers/gpu/drm/msm/msm_debugfs.c | 15 |
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 | |||
108 | free_priv: | ||
109 | kfree(show_priv); | ||
110 | return ret; | ||
104 | } | 111 | } |
105 | 112 | ||
106 | static const struct file_operations msm_gpu_fops = { | 113 | static const struct file_operations msm_gpu_fops = { |