hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
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);