aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2015-11-23 04:32:44 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2015-12-03 10:55:19 -0500
commit39146d6f866888beefaecba3115576c10e1033aa (patch)
tree457041f7ac5f1285f3ca2c844c344177c96a8879
parent8d6185b55ceadea4fe3d7b451843786c4cae564e (diff)
drm/armada: don't grab dev->struct_mutex for in mmap offset ioctl
Since David Herrmann's mmap vma manager rework we don't need to grab dev->struct_mutex any more to prevent races when looking up the mmap offset. Drop it and instead don't forget to use the unref_unlocked variant (since the drm core still cares). v2: Split out the leak fix in dump_map_offset into a separate patch as requested by Russell. Also align labels the same way as before to stick with local coding style. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--drivers/gpu/drm/armada/armada_gem.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/armada/armada_gem.c
index 2a3ef7938f30..e3a86b96af2a 100644
--- a/drivers/gpu/drm/armada/armada_gem.c
+++ b/drivers/gpu/drm/armada/armada_gem.c
@@ -274,12 +274,10 @@ int armada_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
274 struct armada_gem_object *obj; 274 struct armada_gem_object *obj;
275 int ret = 0; 275 int ret = 0;
276 276
277 mutex_lock(&dev->struct_mutex);
278 obj = armada_gem_object_lookup(dev, file, handle); 277 obj = armada_gem_object_lookup(dev, file, handle);
279 if (!obj) { 278 if (!obj) {
280 DRM_ERROR("failed to lookup gem object\n"); 279 DRM_ERROR("failed to lookup gem object\n");
281 ret = -EINVAL; 280 return -EINVAL;
282 goto err_unlock;
283 } 281 }
284 282
285 /* Don't allow imported objects to be mapped */ 283 /* Don't allow imported objects to be mapped */
@@ -295,9 +293,7 @@ int armada_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
295 } 293 }
296 294
297 err_unref: 295 err_unref:
298 drm_gem_object_unreference(&obj->obj); 296 drm_gem_object_unreference_unlocked(&obj->obj);
299 err_unlock:
300 mutex_unlock(&dev->struct_mutex);
301 297
302 return ret; 298 return ret;
303} 299}