diff options
Diffstat (limited to 'sys/dev/drm/drm_fops.h')
-rw-r--r-- | sys/dev/drm/drm_fops.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/drm/drm_fops.h b/sys/dev/drm/drm_fops.h index eb44970..190b708 100644 --- a/sys/dev/drm/drm_fops.h +++ b/sys/dev/drm/drm_fops.h @@ -34,7 +34,6 @@ #include "dev/drm/drmP.h" -/* Requires device lock held */ drm_file_t *DRM(find_file_by_proc)(drm_device_t *dev, DRM_STRUCTPROC *p) { #if __FreeBSD_version >= 500021 @@ -46,6 +45,8 @@ drm_file_t *DRM(find_file_by_proc)(drm_device_t *dev, DRM_STRUCTPROC *p) #endif drm_file_t *priv; + DRM_SPINLOCK_ASSERT(&dev->dev_lock); + TAILQ_FOREACH(priv, &dev->files, link) if (priv->pid == pid && priv->uid == uid) return priv; @@ -66,7 +67,7 @@ int DRM(open_helper)(dev_t kdev, int flags, int fmt, DRM_STRUCTPROC *p, DRM_DEBUG("pid = %d, minor = %d\n", DRM_CURRENTPID, m); DRM_LOCK(); - priv = (drm_file_t *) DRM(find_file_by_proc)(dev, p); + priv = DRM(find_file_by_proc)(dev, p); if (priv) { priv->refs++; } else { @@ -89,6 +90,9 @@ int DRM(open_helper)(dev_t kdev, int flags, int fmt, DRM_STRUCTPROC *p, priv->devXX = dev; priv->ioctl_count = 0; priv->authenticated = !DRM_SUSER(p); + + DRIVER_OPEN_HELPER( priv, dev ); + TAILQ_INSERT_TAIL(&dev->files, priv, link); } DRM_UNLOCK(); |