drm_gem_object_reference(obj);
 
        mutex_lock(&obj->dev->struct_mutex);
-       drm_vm_open_locked(vma);
+       drm_vm_open_locked(obj->dev, vma);
        mutex_unlock(&obj->dev->struct_mutex);
 }
 EXPORT_SYMBOL(drm_gem_vm_open);
        struct drm_device *dev = obj->dev;
 
        mutex_lock(&dev->struct_mutex);
-       drm_vm_close_locked(vma);
+       drm_vm_close_locked(obj->dev, vma);
        drm_gem_object_unreference(obj);
        mutex_unlock(&dev->struct_mutex);
 }
         */
        drm_gem_object_reference(obj);
 
-       drm_vm_open_locked(vma);
+       drm_vm_open_locked(dev, vma);
 
 out_unlock:
        mutex_unlock(&dev->struct_mutex);
 
  * Create a new drm_vma_entry structure as the \p vma private data entry and
  * add it to drm_device::vmalist.
  */
-void drm_vm_open_locked(struct vm_area_struct *vma)
+void drm_vm_open_locked(struct drm_device *dev,
+               struct vm_area_struct *vma)
 {
-       struct drm_file *priv = vma->vm_file->private_data;
-       struct drm_device *dev = priv->minor->dev;
        struct drm_vma_entry *vma_entry;
 
        DRM_DEBUG("0x%08lx,0x%08lx\n",
        struct drm_device *dev = priv->minor->dev;
 
        mutex_lock(&dev->struct_mutex);
-       drm_vm_open_locked(vma);
+       drm_vm_open_locked(dev, vma);
        mutex_unlock(&dev->struct_mutex);
 }
 
-void drm_vm_close_locked(struct vm_area_struct *vma)
+void drm_vm_close_locked(struct drm_device *dev,
+               struct vm_area_struct *vma)
 {
-       struct drm_file *priv = vma->vm_file->private_data;
-       struct drm_device *dev = priv->minor->dev;
        struct drm_vma_entry *pt, *temp;
 
        DRM_DEBUG("0x%08lx,0x%08lx\n",
        struct drm_device *dev = priv->minor->dev;
 
        mutex_lock(&dev->struct_mutex);
-       drm_vm_close_locked(vma);
+       drm_vm_close_locked(dev, vma);
        mutex_unlock(&dev->struct_mutex);
 }
 
        vma->vm_flags |= VM_RESERVED;   /* Don't swap */
        vma->vm_flags |= VM_DONTEXPAND;
 
-       drm_vm_open_locked(vma);
+       drm_vm_open_locked(dev, vma);
        return 0;
 }
 
        vma->vm_flags |= VM_RESERVED;   /* Don't swap */
        vma->vm_flags |= VM_DONTEXPAND;
 
-       drm_vm_open_locked(vma);
+       drm_vm_open_locked(dev, vma);
        return 0;
 }
 
 
                                /* Mapping support (drm_vm.h) */
 extern int drm_mmap(struct file *filp, struct vm_area_struct *vma);
 extern int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma);
-extern void drm_vm_open_locked(struct vm_area_struct *vma);
-extern void drm_vm_close_locked(struct vm_area_struct *vma);
+extern void drm_vm_open_locked(struct drm_device *dev, struct vm_area_struct *vma);
+extern void drm_vm_close_locked(struct drm_device *dev, struct vm_area_struct *vma);
 extern unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait);
 
                                /* Memory management support (drm_memory.h) */