[Mesa-dev] [PATCH 4/5] etnaviv: replace calls to dup(2) with fcntl(F_DUPFD_CLOEXEC)

Matt Whitlock freedesktop at mattwhitlock.name
Tue Mar 27 00:57:32 UTC 2018


Without this fix, duplicated file descriptors leak into child processes.
See commit aaac913e901229d11a1894f6aaf646de6b1a542c for one instance
where the same fix was employed.

Signed-off-by: Matt Whitlock <freedesktop at mattwhitlock.name>
---
 src/gallium/drivers/etnaviv/etnaviv_fence.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_fence.c b/src/gallium/drivers/etnaviv/etnaviv_fence.c
index 22a964ad28..594fa7e76d 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_fence.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_fence.c
@@ -80,7 +80,7 @@ etna_create_fence_fd(struct pipe_context *pctx,
                      enum pipe_fd_type type)
 {
    assert(type == PIPE_FD_TYPE_NATIVE_SYNC);
-   *pfence = etna_fence_create(pctx, dup(fd));
+   *pfence = etna_fence_create(pctx, fcntl(fd, F_DUPFD_CLOEXEC, 3));
 }
 
 void
@@ -96,7 +96,7 @@ static int
 etna_screen_fence_get_fd(struct pipe_screen *pscreen,
                          struct pipe_fence_handle *pfence)
 {
-   return dup(pfence->fence_fd);
+   return fcntl(pfence->fence_fd, F_DUPFD_CLOEXEC, 3);
 }
 
 struct pipe_fence_handle *
-- 
2.16.3



More information about the mesa-dev mailing list