drm/vgem: Drop dev->struct_mutex
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 30 Mar 2016 09:40:51 +0000 (11:40 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 20 Apr 2016 10:58:45 +0000 (12:58 +0200)
With the previous two changes it doesn't protect anything any more.

v2: Use _unlocked unreference variant.

v3: Appease gcc noise.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1459330852-27668-13-git-send-email-daniel.vetter@ffwll.ch
drivers/gpu/drm/vgem/vgem_drv.c

index 75f18987411afd58aee44205ab2b6d87620fb2e6..ae4de36d1d83544c0d3ad0d8d1f7fc1981033f42 100644 (file)
@@ -89,7 +89,6 @@ int vgem_gem_get_pages(struct drm_vgem_gem_object *obj)
 static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 {
        struct drm_vgem_gem_object *obj = vma->vm_private_data;
-       struct drm_device *dev = obj->base.dev;
        loff_t num_pages;
        pgoff_t page_offset;
        int ret;
@@ -103,12 +102,8 @@ static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
        if (page_offset > num_pages)
                return VM_FAULT_SIGBUS;
 
-       mutex_lock(&dev->struct_mutex);
-
        ret = vm_insert_page(vma, (unsigned long)vmf->virtual_address,
                             obj->pages[page_offset]);
-
-       mutex_unlock(&dev->struct_mutex);
        switch (ret) {
        case 0:
                return VM_FAULT_NOPAGE;
@@ -205,12 +200,9 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
        int ret = 0;
        struct drm_gem_object *obj;
 
-       mutex_lock(&dev->struct_mutex);
        obj = drm_gem_object_lookup(dev, file, handle);
-       if (!obj) {
-               ret = -ENOENT;
-               goto unlock;
-       }
+       if (!obj)
+               return -ENOENT;
 
        ret = drm_gem_create_mmap_offset(obj);
        if (ret)
@@ -223,9 +215,8 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
        *offset = drm_vma_node_offset_addr(&obj->vma_node);
 
 unref:
-       drm_gem_object_unreference(obj);
-unlock:
-       mutex_unlock(&dev->struct_mutex);
+       drm_gem_object_unreference_unlocked(obj);
+
        return ret;
 }