Skip to content

Commit 963b2e8

Browse files
committed
drm/etnaviv: fix reference leak when mmaping imported buffer
drm_gem_prime_mmap() takes a reference on the GEM object, but before that drm_gem_mmap_obj() already takes a reference, which will be leaked as only one reference is dropped when the mapping is closed. Drop the extra reference when dma_buf_mmap() succeeds. Cc: [email protected] Signed-off-by: Lucas Stach <[email protected]> Reviewed-by: Christian Gmeiner <[email protected]>
1 parent fe15c26 commit 963b2e8

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,15 @@ static void *etnaviv_gem_prime_vmap_impl(struct etnaviv_gem_object *etnaviv_obj)
9191
static int etnaviv_gem_prime_mmap_obj(struct etnaviv_gem_object *etnaviv_obj,
9292
struct vm_area_struct *vma)
9393
{
94-
return dma_buf_mmap(etnaviv_obj->base.dma_buf, vma, 0);
94+
int ret;
95+
96+
ret = dma_buf_mmap(etnaviv_obj->base.dma_buf, vma, 0);
97+
if (!ret) {
98+
/* Drop the reference acquired by drm_gem_mmap_obj(). */
99+
drm_gem_object_put(&etnaviv_obj->base);
100+
}
101+
102+
return ret;
95103
}
96104

97105
static const struct etnaviv_gem_ops etnaviv_gem_prime_ops = {

0 commit comments

Comments
 (0)