drm/armada: use unlocked gem unreferencing
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 23 Nov 2015 09:32:34 +0000 (10:32 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 3 Dec 2015 15:55:17 +0000 (15:55 +0000)
For drm_gem_object_unreference callers are required to hold
dev->struct_mutex, which these paths don't. Enforcing this requirement
has become a bit more strict with

commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Thu Oct 15 09:36:25 2015 +0200

    drm/gem: Check locking in drm_gem_object_unreference

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/gpu/drm/armada/armada_crtc.c
drivers/gpu/drm/armada/armada_gem.c

index cebcab5606268f76aa1f9161315ef17ba82981d7..7ea35bee7cd5119511251b4f2251e43b56d7f7ca 100644 (file)
@@ -972,7 +972,7 @@ static void armada_drm_crtc_destroy(struct drm_crtc *crtc)
        struct armada_private *priv = crtc->dev->dev_private;
 
        if (dcrtc->cursor_obj)
-               drm_gem_object_unreference(&dcrtc->cursor_obj->obj);
+               drm_gem_object_unreference_unlocked(&dcrtc->cursor_obj->obj);
 
        priv->dcrtc[dcrtc->num] = NULL;
        drm_crtc_cleanup(&dcrtc->crtc);
index 60a688ef81c71cf1174c081426c10c80e9453bdb..aaf88641bfc51ce1629c901f4f3672c49b1556c7 100644 (file)
@@ -352,13 +352,13 @@ int armada_gem_mmap_ioctl(struct drm_device *dev, void *data,
                return -ENOENT;
 
        if (!dobj->obj.filp) {
-               drm_gem_object_unreference(&dobj->obj);
+               drm_gem_object_unreference_unlocked(&dobj->obj);
                return -EINVAL;
        }
 
        addr = vm_mmap(dobj->obj.filp, 0, args->size, PROT_READ | PROT_WRITE,
                       MAP_SHARED, args->offset);
-       drm_gem_object_unreference(&dobj->obj);
+       drm_gem_object_unreference_unlocked(&dobj->obj);
        if (IS_ERR_VALUE(addr))
                return addr;