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 = { |
