summaryrefslogtreecommitdiffstats
path: root/ctdb/common/system_util.c
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2014-06-10 17:04:34 +1000
committerMartin Schwenke <martins@samba.org>2014-06-12 05:40:10 +0200
commit507207e40b193ba753604666c56dfa29c29b7145 (patch)
tree748e4cae54252ba849a398bba6c66b53dff50623 /ctdb/common/system_util.c
parent8c8ef5640e17c1acbda99921277a41442bcc4801 (diff)
downloadsamba-507207e40b193ba753604666c56dfa29c29b7145.tar.gz
samba-507207e40b193ba753604666c56dfa29c29b7145.tar.xz
samba-507207e40b193ba753604666c56dfa29c29b7145.zip
ctdb-common: Move lockdown_memory to system utilities
Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb/common/system_util.c')
-rw-r--r--ctdb/common/system_util.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/ctdb/common/system_util.c b/ctdb/common/system_util.c
index 4f6401690b..d2d9b31e82 100644
--- a/ctdb/common/system_util.c
+++ b/ctdb/common/system_util.c
@@ -20,6 +20,7 @@
#include "includes.h"
#include "system/filesys.h"
+#include "system/shmem.h"
#include <libgen.h>
@@ -275,6 +276,33 @@ bool parse_ip_port(const char *addr, ctdb_sock_addr *saddr)
return ret;
}
+/* we don't lock future pages here; it would increase the chance that
+ * we'd fail to mmap later on. */
+void lockdown_memory(bool valgrinding)
+{
+#if defined(HAVE_MLOCKALL) && !defined(_AIX_)
+ /* Extra stack, please! */
+ char dummy[10000];
+ memset(dummy, 0, sizeof(dummy));
+
+ if (valgrinding) {
+ return;
+ }
+
+ /* Ignore when running in local daemons mode */
+ if (getuid() != 0) {
+ return;
+ }
+
+ /* Avoid compiler optimizing out dummy. */
+ mlock(dummy, sizeof(dummy));
+ if (mlockall(MCL_CURRENT) != 0) {
+ DEBUG(DEBUG_WARNING,("Failed to lockdown memory: %s'\n",
+ strerror(errno)));
+ }
+#endif
+}
+
int mkdir_p(const char *dir, int mode)
{
char t[PATH_MAX];