Merge tag 'drm-misc-next-2020-06-19' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-microblaze.git] / drivers / gpu / drm / msm / msm_gem.c
index 6277fde..38b0c0e 100644 (file)
@@ -560,7 +560,7 @@ int msm_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
 
        *offset = msm_gem_mmap_offset(obj);
 
-       drm_gem_object_put_unlocked(obj);
+       drm_gem_object_put(obj);
 
 fail:
        return ret;
@@ -571,6 +571,9 @@ static void *get_vaddr(struct drm_gem_object *obj, unsigned madv)
        struct msm_gem_object *msm_obj = to_msm_bo(obj);
        int ret = 0;
 
+       if (obj->import_attach)
+               return ERR_PTR(-ENODEV);
+
        mutex_lock(&msm_obj->lock);
 
        if (WARN_ON(msm_obj->madv > madv)) {
@@ -896,7 +899,7 @@ void msm_gem_describe_objects(struct list_head *list, struct seq_file *m)
 }
 #endif
 
-/* don't call directly!  Use drm_gem_object_put() and friends */
+/* don't call directly!  Use drm_gem_object_put_locked() and friends */
 void msm_gem_free_object(struct drm_gem_object *obj)
 {
        struct msm_gem_object *msm_obj = to_msm_bo(obj);
@@ -924,8 +927,7 @@ static void free_object(struct msm_gem_object *msm_obj)
        put_iova(obj);
 
        if (obj->import_attach) {
-               if (msm_obj->vaddr)
-                       dma_buf_vunmap(obj->import_attach->dmabuf, msm_obj->vaddr);
+               WARN_ON(msm_obj->vaddr);
 
                /* Don't drop the pages for imported dmabuf, as they are not
                 * ours, just free the array we allocated:
@@ -987,7 +989,7 @@ int msm_gem_new_handle(struct drm_device *dev, struct drm_file *file,
        ret = drm_gem_handle_create(file, obj, handle);
 
        /* drop reference from allocate - handle holds it now */
-       drm_gem_object_put_unlocked(obj);
+       drm_gem_object_put(obj);
 
        return ret;
 }
@@ -1106,7 +1108,7 @@ static struct drm_gem_object *_msm_gem_new(struct drm_device *dev,
        return obj;
 
 fail:
-       drm_gem_object_put_unlocked(obj);
+       drm_gem_object_put(obj);
        return ERR_PTR(ret);
 }
 
@@ -1166,7 +1168,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
        return obj;
 
 fail:
-       drm_gem_object_put_unlocked(obj);
+       drm_gem_object_put(obj);
        return ERR_PTR(ret);
 }
 
@@ -1200,9 +1202,9 @@ static void *_msm_gem_kernel_new(struct drm_device *dev, uint32_t size,
        return vaddr;
 err:
        if (locked)
-               drm_gem_object_put(obj);
+               drm_gem_object_put_locked(obj);
        else
-               drm_gem_object_put_unlocked(obj);
+               drm_gem_object_put(obj);
 
        return ERR_PTR(ret);
 
@@ -1232,9 +1234,9 @@ void msm_gem_kernel_put(struct drm_gem_object *bo,
        msm_gem_unpin_iova(bo, aspace);
 
        if (locked)
-               drm_gem_object_put(bo);
+               drm_gem_object_put_locked(bo);
        else
-               drm_gem_object_put_unlocked(bo);
+               drm_gem_object_put(bo);
 }
 
 void msm_gem_object_set_name(struct drm_gem_object *bo, const char *fmt, ...)