diff --git a/src/pages.c b/src/pages.c index bd0e62da..ed802a0e 100644 --- a/src/pages.c +++ b/src/pages.c @@ -826,8 +826,16 @@ init_thp_state(void) { static const char sys_state_never[] = "always madvise [never]\n"; char buf[sizeof(sys_state_madvise)]; +# if defined(O_CLOEXEC) + int fd = malloc_open( + "/sys/kernel/mm/transparent_hugepage/enabled", O_RDONLY | O_CLOEXEC); +# else int fd = malloc_open( "/sys/kernel/mm/transparent_hugepage/enabled", O_RDONLY); + if (fd != -1) { + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + } +# endif if (fd == -1) { goto label_error; }