]> Pileus Git - ~andy/linux/blobdiff - drivers/gpu/drm/exynos/exynos_drm_drv.c
drm/exynos: Fix freeing issues in exynos_drm_drv.c
[~andy/linux] / drivers / gpu / drm / exynos / exynos_drm_drv.c
index 9d096a0c5f8d5f6bf0583d37f5efe433085504e4..215131ab1dd2f2b65c707c6d367d50ec967c27d6 100644 (file)
@@ -171,21 +171,23 @@ static int exynos_drm_open(struct drm_device *dev, struct drm_file *file)
        file->driver_priv = file_priv;
 
        ret = exynos_drm_subdrv_open(dev, file);
-       if (ret) {
-               kfree(file_priv);
-               file->driver_priv = NULL;
-       }
+       if (ret)
+               goto out;
 
        anon_filp = anon_inode_getfile("exynos_gem", &exynos_drm_gem_fops,
                                        NULL, 0);
        if (IS_ERR(anon_filp)) {
-               kfree(file_priv);
-               return PTR_ERR(anon_filp);
+               ret = PTR_ERR(anon_filp);
+               goto out;
        }
 
        anon_filp->f_mode = FMODE_READ | FMODE_WRITE;
        file_priv->anon_filp = anon_filp;
 
+       return ret;
+out:
+       kfree(file_priv);
+       file->driver_priv = NULL;
        return ret;
 }