From bbb3069d05903f7c7b8d5bbdfd98a4877f2cba18 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 15 Nov 2023 10:52:22 +0100 Subject: [PATCH] freedreno: replace dup() with os_dupfd_cloexec() dup() will leak the new FD into any child process after fork(). Signed-off-by: Simon Ser Part-of: --- src/freedreno/vulkan/tu_knl_kgsl.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/freedreno/vulkan/tu_knl_kgsl.cc b/src/freedreno/vulkan/tu_knl_kgsl.cc index d9dcd64d3f9..83cd9ed1da3 100644 --- a/src/freedreno/vulkan/tu_knl_kgsl.cc +++ b/src/freedreno/vulkan/tu_knl_kgsl.cc @@ -786,7 +786,7 @@ kgsl_syncobj_export(struct kgsl_syncobj *s, int *pFd) if (s->fd < 0) *pFd = -1; else - *pFd = dup(s->fd); + *pFd = os_dupfd_cloexec(s->fd); return VK_SUCCESS; case KGSL_SYNCOBJ_STATE_TS: @@ -879,7 +879,7 @@ kgsl_syncobj_merge(const struct kgsl_syncobj **syncobjs, uint32_t count) assert(ret.fd >= 0); } else { ret = *sync; - ret.fd = dup(ret.fd); + ret.fd = os_dupfd_cloexec(ret.fd); assert(ret.fd >= 0); } break; @@ -994,7 +994,7 @@ vk_kgsl_sync_import_sync_file(struct vk_device *device, { struct vk_kgsl_syncobj *s = container_of(sync, struct vk_kgsl_syncobj, vk); if (fd >= 0) { - fd = dup(fd); + fd = os_dupfd_cloexec(fd); if (fd < 0) { mesa_loge("vk_kgsl_sync_import_sync_file: dup failed: %s", strerror(errno));