*/
static void epoll_init_ctx(struct epoll_event_context *epoll_ev)
{
+ unsigned v;
+
epoll_ev->epoll_fd = epoll_create(64);
+
+ /* on exec, don't inherit the fd */
+ v = fcntl(epoll_ev->epoll_fd, F_GETFD, 0);
+ fcntl(epoll_ev->epoll_fd, F_SETFD, v | FD_CLOEXEC);
+
epoll_ev->pid = getpid();
talloc_set_destructor(epoll_ev, epoll_ctx_destructor);
}
static void epoll_check_reopen(struct epoll_event_context *epoll_ev)
{
struct fd_event *fde;
+ unsigned v;
if (epoll_ev->pid == getpid()) {
return;
DEBUG(0,("Failed to recreate epoll handle after fork\n"));
return;
}
+
+ /* on exec, don't inherit the fd */
+ v = fcntl(epoll_ev->epoll_fd, F_GETFD, 0);
+ fcntl(epoll_ev->epoll_fd, F_SETFD, v | FD_CLOEXEC);
+
epoll_ev->pid = getpid();
for (fde=epoll_ev->fd_events;fde;fde=fde->next) {
epoll_add_event(epoll_ev, fde);
int rev = 0, locked = 0;
unsigned char *vp;
u32 vertest;
+ unsigned v;
if (!(tdb = (struct tdb_context *)calloc(1, sizeof *tdb))) {
/* Can't log this */
goto fail; /* errno set by open(2) */
}
+ /* on exec, don't inherit the fd */
+ v = fcntl(tdb->fd, F_GETFD, 0);
+ fcntl(tdb->fd, F_SETFD, v | FD_CLOEXEC);
+
/* ensure there is only one process initialising at once */
if (tdb->methods->tdb_brlock(tdb, GLOBAL_LOCK, F_WRLCK, F_SETLKW, 0, 1) == -1) {
TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_open_ex: failed to get global lock on %s: %s\n",