From: Maksim Sisov Date: Tue, 18 May 2021 05:23:56 +0000 (+0300) Subject: iris: export GEM handle with RDWR access rights X-Git-Tag: upstream/21.2.3~3336 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b74898ef699486d0513fcd3af2587a831df99dff;p=platform%2Fupstream%2Fmesa.git iris: export GEM handle with RDWR access rights There is a regression that made it impossible to export gem handles with write access. That is, a client may export gem handles of each buffer plane, then export dmabuf fds using these handles, and mmap these dmabuf in a different process (this is what Chromium does). After https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4861, it became impossible as mmap resulted in EACCESS error as slightly different approach was taken for exporting these gem handles. This CL fixes exporting gem handles (which are exported from dmabuf fds) by adding the DRM_RDWR flag. Cc: mesa-stable Fixes #3119 Reviewed-by: Lionel Landwerlin Part-of: --- diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index 99dd2e7..1c731a4 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -1572,7 +1572,7 @@ iris_bo_export_dmabuf(struct iris_bo *bo, int *prime_fd) iris_bo_make_external(bo); if (drmPrimeHandleToFD(bufmgr->fd, bo->gem_handle, - DRM_CLOEXEC, prime_fd) != 0) + DRM_CLOEXEC | DRM_RDWR, prime_fd) != 0) return -errno; return 0;