Module: Mesa Branch: staging/21.1 Commit: 24e185e0373cd7fed33febfaef33347a7eb076cb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=24e185e0373cd7fed33febfaef33347a7eb076cb
Author: Maksim Sisov <[email protected]> Date: Tue May 18 08:23:56 2021 +0300 i965: 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 <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10850> (cherry picked from commit 5eaf8b59c858bc93f0b18045f49dcdfe6b1d6e75) --- .pick_status.json | 2 +- src/mesa/drivers/dri/i965/brw_bufmgr.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5498394f5c2..c02b3c90190 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -526,7 +526,7 @@ "description": "i965: export GEM handle with RDWR access rights", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.c b/src/mesa/drivers/dri/i965/brw_bufmgr.c index dc0ea07f7ac..f1d53bc9ad5 100644 --- a/src/mesa/drivers/dri/i965/brw_bufmgr.c +++ b/src/mesa/drivers/dri/i965/brw_bufmgr.c @@ -1581,7 +1581,7 @@ brw_bo_gem_export_to_prime(struct brw_bo *bo, int *prime_fd) brw_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; bo->reusable = false; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
