From 1e72fbcfd1e6ab5fad3d429f7c149daa17d979c2 Mon Sep 17 00:00:00 2001 From: Nikolas Zimmermann Date: Wed, 26 Mar 2025 14:48:07 +0100 Subject: [PATCH] etnaviv: drm: Add DRM_RDWR permissions to drmPrimeHandleToFD() call. Currently it is not possible to mmap() the exported dma-bufs from etnaviv for writing, through the GBM APIs, such as gbm_bo_get_fd(). etna_bo_dmabuf() calls drmPrimeHandleToFD() only with DRM_CLOEXEC flag, omitting DRM_RDWR. A typical call sequence, ending in etna_bo_dmabuf, for illustration: gbm_bo_get_fd -> gbm_dri_bo_get_fd -> dri2_query_image -> dri2_query_image_by_resource_handle -> etna_resource_get_handle -> etna_bo_dmabuf. Signed-off-by: Nikolas Zimmermann Reviewed-by: Lucas Stach Part-of: --- src/etnaviv/drm/etnaviv_bo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/etnaviv/drm/etnaviv_bo.c b/src/etnaviv/drm/etnaviv_bo.c index 627e77ad5bc..59599c3db85 100644 --- a/src/etnaviv/drm/etnaviv_bo.c +++ b/src/etnaviv/drm/etnaviv_bo.c @@ -362,7 +362,7 @@ int etna_bo_dmabuf(struct etna_bo *bo) { int ret, prime_fd; - ret = drmPrimeHandleToFD(bo->dev->fd, bo->handle, DRM_CLOEXEC, + ret = drmPrimeHandleToFD(bo->dev->fd, bo->handle, DRM_CLOEXEC | DRM_RDWR, &prime_fd); if (ret) { ERROR_MSG("failed to get dmabuf fd: %d", ret);