73 lines
2.2 KiB
Plaintext
73 lines
2.2 KiB
Plaintext
$NetBSD: patch-9010,v 1.1 2014/11/18 14:38:15 manu Exp $
|
|
From 70e4f2935ac858f2e83d0c3887b584af8fa0bd5b Mon Sep 17 00:00:00 2001
|
|
From: Emmanuel Dreyfus <manu@netbsd.org>
|
|
Date: Thu, 30 Oct 2014 10:54:24 +0100
|
|
Subject: [PATCH] Use F_CLOSEM if available
|
|
|
|
Use F_CLOSEM to close all file descriptors if available.
|
|
|
|
Backport of Ib3c682825b89c163ebb152848f2533b3cb62cdce
|
|
|
|
BUG: 1138897
|
|
Change-Id: Ie44c8e07c77ca5509766e0addbb17c1979df68e7
|
|
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
|
|
---
|
|
contrib/uuid/gen_uuid.c | 7 +++++++
|
|
libglusterfs/src/run.c | 8 ++++++--
|
|
2 files changed, 13 insertions(+), 2 deletions(-)
|
|
|
|
diff --git contrib/uuid/gen_uuid.c contrib/uuid/gen_uuid.c
|
|
index 79923cd..e69995a 100644
|
|
--- contrib/uuid/gen_uuid.c
|
|
+++ contrib/uuid/gen_uuid.c
|
|
@@ -465,6 +465,12 @@ static ssize_t read_all(int fd, char *buf, size_t count)
|
|
#if defined(USE_UUIDD) && defined(HAVE_SYS_UN_H)
|
|
static void close_all_fds(void)
|
|
{
|
|
+#ifdef F_CLOSEM
|
|
+ (void)fcntl(0, F_CLOSEM);
|
|
+ (void)open("/dev/null", O_RDWR); /* stdin */
|
|
+ (void)open("/dev/null", O_RDWR); /* stdout */
|
|
+ (void)open("/dev/null", O_RDWR); /* stderr */
|
|
+#else /* F_CLOSEM */
|
|
int i, max;
|
|
|
|
#if defined(HAVE_SYSCONF) && defined(_SC_OPEN_MAX)
|
|
@@ -485,6 +491,7 @@ static void close_all_fds(void)
|
|
if (i <= 2)
|
|
open("/dev/null", O_RDWR);
|
|
}
|
|
+#endif /* F_CLOSEM */
|
|
}
|
|
#endif
|
|
|
|
diff --git libglusterfs/src/run.c libglusterfs/src/run.c
|
|
index 4fd2a3a..93fe12a 100644
|
|
--- libglusterfs/src/run.c
|
|
+++ libglusterfs/src/run.c
|
|
@@ -289,7 +289,10 @@ runner_start (runner_t *runner)
|
|
closedir (d);
|
|
} else
|
|
ret = -1;
|
|
-#else
|
|
+#else /* !GF_LINUX_HOST_OS */
|
|
+#ifdef F_CLOSEM /* NetBSD */
|
|
+ (void)fcntl(3, F_CLOSEM);
|
|
+#else /* !F_CLOSEM */
|
|
struct rlimit rl;
|
|
ret = getrlimit (RLIMIT_NOFILE, &rl);
|
|
GF_ASSERT (ret == 0);
|
|
@@ -298,7 +301,8 @@ runner_start (runner_t *runner)
|
|
if (i != xpi[1])
|
|
close (i);
|
|
}
|
|
-#endif
|
|
+#endif /* !F_CLOSEM */
|
|
+#endif /* !GF_LINUX_HOST_OS */
|
|
}
|
|
|
|
if (ret != -1) {
|
|
--
|
|
1.8.2.3
|
|
|