Push minor number instead. This is a preparatory
patch for introducing render nodes. It has been derived
from 7c5cc4f63556e351e9e5980ed22accad410e3fdc originally
created by Dave Airlie.

Signed-off-by: Ilija Hadzic <ihad...@research.bell-labs.com>
---
 drivers/gpu/drm/drm_fops.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index 6263b01..98cb064 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c
@@ -43,8 +43,8 @@
 DEFINE_MUTEX(drm_global_mutex);
 EXPORT_SYMBOL(drm_global_mutex);
 
-static int drm_open_helper(struct inode *inode, struct file *filp,
-                          struct drm_device * dev);
+static int drm_open_helper(struct file *filp,
+                          struct drm_minor *minor);
 
 static int drm_setup(struct drm_device * dev)
 {
@@ -133,7 +133,7 @@ int drm_open(struct inode *inode, struct file *filp)
        if (!(dev = minor->dev))
                return -ENODEV;
 
-       retcode = drm_open_helper(inode, filp, dev);
+       retcode = drm_open_helper(filp, minor);
        if (!retcode) {
                atomic_inc(&dev->counts[_DRM_STAT_OPENS]);
                if (!dev->open_count++)
@@ -226,10 +226,10 @@ static int drm_cpu_valid(void)
  * Creates and initializes a drm_file structure for the file private data in \p
  * filp and add it into the double linked list in \p dev.
  */
-static int drm_open_helper(struct inode *inode, struct file *filp,
-                          struct drm_device * dev)
+static int drm_open_helper(struct file *filp,
+                          struct drm_minor *minor)
 {
-       int minor_id = iminor(inode);
+       struct drm_device *dev = minor->dev;
        struct drm_file *priv;
        int ret;
 
@@ -240,7 +240,7 @@ static int drm_open_helper(struct inode *inode, struct file 
*filp,
        if (dev->switch_power_state != DRM_SWITCH_POWER_ON)
                return -EINVAL;
 
-       DRM_DEBUG("pid = %d, minor = %d\n", task_pid_nr(current), minor_id);
+       DRM_DEBUG("pid = %d, minor = %d\n", task_pid_nr(current), minor->index);
 
        priv = kzalloc(sizeof(*priv), GFP_KERNEL);
        if (!priv)
@@ -250,7 +250,7 @@ static int drm_open_helper(struct inode *inode, struct file 
*filp,
        priv->filp = filp;
        priv->uid = current_euid();
        priv->pid = task_pid_nr(current);
-       priv->minor = idr_find(&drm_minors_idr, minor_id);
+       priv->minor = minor;
        priv->ioctl_count = 0;
        /* for compatibility root is always authenticated */
        priv->authenticated = capable(CAP_SYS_ADMIN);
@@ -558,7 +558,8 @@ int drm_release(struct inode *inode, struct file *filp)
        }
 
        /* drop the reference held my the file priv */
-       drm_master_put(&file_priv->master);
+       if (file_priv->master)
+               drm_master_put(&file_priv->master);
        file_priv->is_master = 0;
        list_del(&file_priv->lhead);
        mutex_unlock(&dev->struct_mutex);
-- 
1.7.8.5

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to