Skip to content

Commit ee9adb7

Browse files
committed
drm/shmem-helper: Remove another errant put in error path
drm_gem_shmem_mmap() doesn't own reference in error code path, resulting in the dma-buf shmem GEM object getting prematurely freed leading to a later use-after-free. Fixes: f49a51b ("drm/shme-helpers: Fix dma_buf_mmap forwarding bug") Cc: [email protected] Signed-off-by: Dmitry Osipenko <[email protected]> Reviewed-by: Rob Clark <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent a54bace commit ee9adb7

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/gpu/drm/drm_gem_shmem_helper.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -622,11 +622,14 @@ int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct
622622
int ret;
623623

624624
if (obj->import_attach) {
625-
/* Drop the reference drm_gem_mmap_obj() acquired.*/
626-
drm_gem_object_put(obj);
627625
vma->vm_private_data = NULL;
626+
ret = dma_buf_mmap(obj->dma_buf, vma, 0);
627+
628+
/* Drop the reference drm_gem_mmap_obj() acquired.*/
629+
if (!ret)
630+
drm_gem_object_put(obj);
628631

629-
return dma_buf_mmap(obj->dma_buf, vma, 0);
632+
return ret;
630633
}
631634

632635
ret = drm_gem_shmem_get_pages(shmem);

0 commit comments

Comments
 (0)