Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ca605f7 authored by Sachin Kamat's avatar Sachin Kamat Committed by Inki Dae
Browse files

drm/exynos: Fix freeing issues in exynos_drm_drv.c



Fixes the following errors:
drivers/gpu/drm/exynos/exynos_drm_drv.c:182 exynos_drm_open()
error: double free of 'file_priv'
drivers/gpu/drm/exynos/exynos_drm_drv.c:188 exynos_drm_open()
error: dereferencing freed memory 'file_priv'

Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 7c4c62a0
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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;
}