Mesa (master): freedreno: replace all dup() with os_dupfd_cloexec()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 18 02:25:51 UTC 2020


Module: Mesa
Branch: master
Commit: 9ca2a4e6fc9d059a024ba8da20891ccf79ba659d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ca2a4e6fc9d059a024ba8da20891ccf79ba659d

Author: Eric Engestrom <eric at engestrom.ch>
Date:   Fri Jun  5 10:22:47 2020 +0200

freedreno: replace all dup() with os_dupfd_cloexec()

Signed-off-by: Eric Engestrom <eric at engestrom.ch>
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5369>

---

 src/freedreno/drm/freedreno_device.c            | 4 +++-
 src/freedreno/vulkan/tu_android.c               | 8 +++++---
 src/gallium/drivers/freedreno/freedreno_fence.c | 5 +++--
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/freedreno/drm/freedreno_device.c b/src/freedreno/drm/freedreno_device.c
index be03cca426f..f0dc53b526d 100644
--- a/src/freedreno/drm/freedreno_device.c
+++ b/src/freedreno/drm/freedreno_device.c
@@ -28,6 +28,8 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
+#include "util/os_file.h"
+
 #include "freedreno_drmif.h"
 #include "freedreno_priv.h"
 
@@ -90,7 +92,7 @@ out:
  */
 struct fd_device * fd_device_new_dup(int fd)
 {
-	int dup_fd = dup(fd);
+	int dup_fd = os_dupfd_cloexec(fd);
 	struct fd_device *dev = fd_device_new(dup_fd);
 	if (dev)
 		dev->closefd = 1;
diff --git a/src/freedreno/vulkan/tu_android.c b/src/freedreno/vulkan/tu_android.c
index 00a3a577468..d82c8e9125d 100644
--- a/src/freedreno/vulkan/tu_android.c
+++ b/src/freedreno/vulkan/tu_android.c
@@ -33,6 +33,8 @@
 
 #include "drm-uapi/drm_fourcc.h"
 
+#include "util/os_file.h"
+
 static int
 tu_hal_open(const struct hw_module_t *mod,
             const char *id,
@@ -154,7 +156,7 @@ tu_image_from_gralloc(VkDevice device_h,
       .sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
       .pNext = &ded_alloc,
       .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
-      .fd = dup(dma_buf),
+      .fd = os_dupfd_cloexec(dma_buf),
    };
 
    result =
@@ -293,7 +295,7 @@ tu_AcquireImageANDROID(VkDevice device,
 
    if (semaphore != VK_NULL_HANDLE) {
       int semaphore_fd =
-         nativeFenceFd >= 0 ? dup(nativeFenceFd) : nativeFenceFd;
+         nativeFenceFd >= 0 ? os_dupfd_cloexec(nativeFenceFd) : nativeFenceFd;
       semaphore_result = tu_ImportSemaphoreFdKHR(
          device, &(VkImportSemaphoreFdInfoKHR) {
                     .sType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
@@ -304,7 +306,7 @@ tu_AcquireImageANDROID(VkDevice device,
    }
 
    if (fence != VK_NULL_HANDLE) {
-      int fence_fd = nativeFenceFd >= 0 ? dup(nativeFenceFd) : nativeFenceFd;
+      int fence_fd = nativeFenceFd >= 0 ? os_dupfd_cloexec(nativeFenceFd) : nativeFenceFd;
       fence_result = tu_ImportFenceFdKHR(
          device, &(VkImportFenceFdInfoKHR) {
                     .sType = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
diff --git a/src/gallium/drivers/freedreno/freedreno_fence.c b/src/gallium/drivers/freedreno/freedreno_fence.c
index 71472da704a..59ea1896f45 100644
--- a/src/gallium/drivers/freedreno/freedreno_fence.c
+++ b/src/gallium/drivers/freedreno/freedreno_fence.c
@@ -26,6 +26,7 @@
 
 #include <libsync.h>
 
+#include "util/os_file.h"
 #include "util/u_inlines.h"
 
 #include "freedreno_fence.h"
@@ -122,7 +123,7 @@ void fd_create_fence_fd(struct pipe_context *pctx,
 		enum pipe_fd_type type)
 {
 	assert(type == PIPE_FD_TYPE_NATIVE_SYNC);
-	*pfence = fence_create(fd_context(pctx), NULL, 0, dup(fd));
+	*pfence = fence_create(fd_context(pctx), NULL, 0, os_dupfd_cloexec(fd));
 }
 
 void fd_fence_server_sync(struct pipe_context *pctx,
@@ -146,7 +147,7 @@ int fd_fence_get_fd(struct pipe_screen *pscreen,
 		struct pipe_fence_handle *fence)
 {
 	fence_flush(fence);
-	return dup(fence->fence_fd);
+	return os_dupfd_cloexec(fence->fence_fd);
 }
 
 struct pipe_fence_handle * fd_fence_create(struct fd_batch *batch)



More information about the mesa-commit mailing list