aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2016-03-30 05:40:51 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-04-20 06:58:45 -0400
commit0797ac61810b9b9938516ad9c92701d1639a0867 (patch)
treed3f25a8373d3058d6e297963b53ce09812acd767
parent7f340a26f4769a49fb51bfc023ca651dfe16042e (diff)
drm/vgem: Drop dev->struct_mutex
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
-rw-r--r--drivers/gpu/drm/vgem/vgem_drv.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index 75f18987411a..ae4de36d1d83 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -89,7 +89,6 @@ int vgem_gem_get_pages(struct drm_vgem_gem_object *obj)
89static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) 89static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
90{ 90{
91 struct drm_vgem_gem_object *obj = vma->vm_private_data; 91 struct drm_vgem_gem_object *obj = vma->vm_private_data;
92 struct drm_device *dev = obj->base.dev;
93 loff_t num_pages; 92 loff_t num_pages;
94 pgoff_t page_offset; 93 pgoff_t page_offset;
95 int ret; 94 int ret;
@@ -103,12 +102,8 @@ static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
103 if (page_offset > num_pages) 102 if (page_offset > num_pages)
104 return VM_FAULT_SIGBUS; 103 return VM_FAULT_SIGBUS;
105 104
106 mutex_lock(&dev->struct_mutex);
107
108 ret = vm_insert_page(vma, (unsigned long)vmf->virtual_address, 105 ret = vm_insert_page(vma, (unsigned long)vmf->virtual_address,
109 obj->pages[page_offset]); 106 obj->pages[page_offset]);
110
111 mutex_unlock(&dev->struct_mutex);
112 switch (ret) { 107 switch (ret) {
113 case 0: 108 case 0:
114 return VM_FAULT_NOPAGE; 109 return VM_FAULT_NOPAGE;
@@ -205,12 +200,9 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
205 int ret = 0; 200 int ret = 0;
206 struct drm_gem_object *obj; 201 struct drm_gem_object *obj;
207 202
208 mutex_lock(&dev->struct_mutex);
209 obj = drm_gem_object_lookup(dev, file, handle); 203 obj = drm_gem_object_lookup(dev, file, handle);
210 if (!obj) { 204 if (!obj)
211 ret = -ENOENT; 205 return -ENOENT;
212 goto unlock;
213 }
214 206
215 ret = drm_gem_create_mmap_offset(obj); 207 ret = drm_gem_create_mmap_offset(obj);
216 if (ret) 208 if (ret)
@@ -223,9 +215,8 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
223 *offset = drm_vma_node_offset_addr(&obj->vma_node); 215 *offset = drm_vma_node_offset_addr(&obj->vma_node);
224 216
225unref: 217unref:
226 drm_gem_object_unreference(obj); 218 drm_gem_object_unreference_unlocked(obj);
227unlock: 219
228 mutex_unlock(&dev->struct_mutex);
229 return ret; 220 return ret;
230} 221}
231 222