Module: Mesa Branch: staging/22.2 Commit: a3e250c789f0c9eaf3f772f725c783b05fe90861 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3e250c789f0c9eaf3f772f725c783b05fe90861
Author: Jordan Justen <[email protected]> Date: Thu Aug 11 01:47:09 2022 -0700 iris: Drop extra file-descriptor dup in iris_drm_screen_create() In a99e85db9eb, we added a dup into iris_screen_create(). Apparently some android code paths must be hitting iris_screen_create() without calling iris_drm_screen_create(). After a99e85db9eb, the code paths that do hit iris_drm_screen_create() will now dup the fd twice, but iris_screen_destroy() will only close 1 of these fds. Fixes: a99e85db9eb ("iris:Duplicate DRM fd internally instead of reuse.") Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Tested-by: Tapani Pälli <[email protected]> Reviewed-by: José Roberto de Souza <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18020> (cherry picked from commit e9f40e42de6b47e036d603296ecb5facb384eb0c) --- .pick_status.json | 2 +- src/gallium/winsys/iris/drm/iris_drm_winsys.c | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 7798661be79..eeeba20eca4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -11443,7 +11443,7 @@ "description": "iris: Drop extra file-descriptor dup in iris_drm_screen_create()", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a99e85db9ebd83c41d3606568db8e8d81ca0205c" }, diff --git a/src/gallium/winsys/iris/drm/iris_drm_winsys.c b/src/gallium/winsys/iris/drm/iris_drm_winsys.c index a7a70283ef9..15095e2d3fa 100644 --- a/src/gallium/winsys/iris/drm/iris_drm_winsys.c +++ b/src/gallium/winsys/iris/drm/iris_drm_winsys.c @@ -32,8 +32,5 @@ extern struct pipe_screen *iris_screen_create(int fd, const struct pipe_screen_c struct pipe_screen * iris_drm_screen_create(int fd, const struct pipe_screen_config *config) { - int newfd = os_dupfd_cloexec(fd); - if (newfd < 0) - return NULL; - return iris_screen_create(newfd, config); + return iris_screen_create(fd, config); }
