forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-09 05e59e5fb0064c97a1c10921ecd549f2d4a58565
kernel/drivers/gpu/drm/drm_gem_shmem_helper.c
....@@ -614,11 +614,20 @@
614614 int ret;
615615
616616 if (obj->import_attach) {
617
- /* Drop the reference drm_gem_mmap_obj() acquired.*/
618
- drm_gem_object_put(obj);
617
+ /* Reset both vm_ops and vm_private_data, so we don't end up with
618
+ * vm_ops pointing to our implementation if the dma-buf backend
619
+ * doesn't set those fields.
620
+ */
619621 vma->vm_private_data = NULL;
622
+ vma->vm_ops = NULL;
620623
621
- return dma_buf_mmap(obj->dma_buf, vma, 0);
624
+ ret = dma_buf_mmap(obj->dma_buf, vma, 0);
625
+
626
+ /* Drop the reference drm_gem_mmap_obj() acquired.*/
627
+ if (!ret)
628
+ drm_gem_object_put(obj);
629
+
630
+ return ret;
622631 }
623632
624633 shmem = to_drm_gem_shmem_obj(obj);