|
@@ -84,7 +84,7 @@ static int msm_gpu_open(struct inode *inode, struct file *file)
|
|
|
|
|
|
ret = mutex_lock_interruptible(&dev->struct_mutex);
|
|
|
if (ret)
|
|
|
- return ret;
|
|
|
+ goto free_priv;
|
|
|
|
|
|
pm_runtime_get_sync(&gpu->pdev->dev);
|
|
|
show_priv->state = gpu->funcs->gpu_state_get(gpu);
|
|
@@ -94,13 +94,20 @@ static int msm_gpu_open(struct inode *inode, struct file *file)
|
|
|
|
|
|
if (IS_ERR(show_priv->state)) {
|
|
|
ret = PTR_ERR(show_priv->state);
|
|
|
- kfree(show_priv);
|
|
|
- return ret;
|
|
|
+ goto free_priv;
|
|
|
}
|
|
|
|
|
|
show_priv->dev = dev;
|
|
|
|
|
|
- return single_open(file, msm_gpu_show, show_priv);
|
|
|
+ ret = single_open(file, msm_gpu_show, show_priv);
|
|
|
+ if (ret)
|
|
|
+ goto free_priv;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+
|
|
|
+free_priv:
|
|
|
+ kfree(show_priv);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static const struct file_operations msm_gpu_fops = {
|