]> git.karo-electronics.de Git - linux-beck.git/commitdiff
drm/tegra: Use unlocked gem unreferencing
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 23 Nov 2015 09:32:40 +0000 (10:32 +0100)
committerThierry Reding <treding@nvidia.com>
Mon, 14 Dec 2015 09:50:35 +0000 (10:50 +0100)
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

Cc: Thierry Reding <thierry.reding@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/drm.c

index dc8e7b8db54b79ae0c977ce6535ac14fb67aa147..b26f62e7334d4c8c3643d67f2e7f0b9b491e46cb 100644 (file)
@@ -473,7 +473,7 @@ static int tegra_gem_mmap(struct drm_device *drm, void *data,
 
        args->offset = drm_vma_node_offset_addr(&bo->gem.vma_node);
 
-       drm_gem_object_unreference(gem);
+       drm_gem_object_unreference_unlocked(gem);
 
        return 0;
 }
@@ -683,7 +683,7 @@ static int tegra_gem_set_tiling(struct drm_device *drm, void *data,
        bo->tiling.mode = mode;
        bo->tiling.value = value;
 
-       drm_gem_object_unreference(gem);
+       drm_gem_object_unreference_unlocked(gem);
 
        return 0;
 }
@@ -723,7 +723,7 @@ static int tegra_gem_get_tiling(struct drm_device *drm, void *data,
                break;
        }
 
-       drm_gem_object_unreference(gem);
+       drm_gem_object_unreference_unlocked(gem);
 
        return err;
 }
@@ -748,7 +748,7 @@ static int tegra_gem_set_flags(struct drm_device *drm, void *data,
        if (args->flags & DRM_TEGRA_GEM_BOTTOM_UP)
                bo->flags |= TEGRA_BO_BOTTOM_UP;
 
-       drm_gem_object_unreference(gem);
+       drm_gem_object_unreference_unlocked(gem);
 
        return 0;
 }
@@ -770,7 +770,7 @@ static int tegra_gem_get_flags(struct drm_device *drm, void *data,
        if (bo->flags & TEGRA_BO_BOTTOM_UP)
                args->flags |= DRM_TEGRA_GEM_BOTTOM_UP;
 
-       drm_gem_object_unreference(gem);
+       drm_gem_object_unreference_unlocked(gem);
 
        return 0;
 }