diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-03-30 05:40:51 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-04-20 06:58:45 -0400 |
commit | 0797ac61810b9b9938516ad9c92701d1639a0867 (patch) | |
tree | d3f25a8373d3058d6e297963b53ce09812acd767 | |
parent | 7f340a26f4769a49fb51bfc023ca651dfe16042e (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.c | 17 |
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) | |||
89 | static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | 89 | static 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 | ||
225 | unref: | 217 | unref: |
226 | drm_gem_object_unreference(obj); | 218 | drm_gem_object_unreference_unlocked(obj); |
227 | unlock: | 219 | |
228 | mutex_unlock(&dev->struct_mutex); | ||
229 | return ret; | 220 | return ret; |
230 | } | 221 | } |
231 | 222 | ||