summaryrefslogtreecommitdiffstats
path: root/sys/dev/drm/drm_fops.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/drm/drm_fops.c')
-rw-r--r--sys/dev/drm/drm_fops.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/sys/dev/drm/drm_fops.c b/sys/dev/drm/drm_fops.c
index 3f743e0..814958e 100644
--- a/sys/dev/drm/drm_fops.c
+++ b/sys/dev/drm/drm_fops.c
@@ -57,12 +57,6 @@ int drm_open_helper(struct cdev *kdev, int flags, int fmt, DRM_STRUCTPROC *p,
return ENOMEM;
}
- retcode = devfs_set_cdevpriv(priv, drm_close);
- if (retcode != 0) {
- free(priv, DRM_MEM_FILES);
- return retcode;
- }
-
DRM_LOCK();
priv->dev = dev;
priv->uid = p->td_ucred->cr_svuid;
@@ -76,7 +70,6 @@ int drm_open_helper(struct cdev *kdev, int flags, int fmt, DRM_STRUCTPROC *p,
/* shared code returns -errno */
retcode = -dev->driver->open(dev, priv);
if (retcode != 0) {
- devfs_clear_cdevpriv();
free(priv, DRM_MEM_FILES);
DRM_UNLOCK();
return retcode;
@@ -89,7 +82,12 @@ int drm_open_helper(struct cdev *kdev, int flags, int fmt, DRM_STRUCTPROC *p,
TAILQ_INSERT_TAIL(&dev->files, priv, link);
DRM_UNLOCK();
kdev->si_drv1 = dev;
- return 0;
+
+ retcode = devfs_set_cdevpriv(priv, drm_close);
+ if (retcode != 0)
+ drm_close(priv);
+
+ return (retcode);
}
OpenPOWER on IntegriCloud