diff --git a/criu/files.c b/criu/files.c index 9d1663d78..d1a961d58 100644 --- a/criu/files.c +++ b/criu/files.c @@ -1297,7 +1297,7 @@ int prepare_fds(struct pstree_item *me) * set than its parent */ close_service_fd(CGROUP_YARD); - close_pid_proc(); /* flush any proc cached fds we may have */ + set_proc_self_fd(-1); /* flush any proc cached fds we may have */ if (rsti(me)->fdt) { struct fdt *fdt = rsti(me)->fdt; diff --git a/criu/include/servicefd.h b/criu/include/servicefd.h index 0c4d6c102..6266b5324 100644 --- a/criu/include/servicefd.h +++ b/criu/include/servicefd.h @@ -28,6 +28,7 @@ enum sfd_type { struct pstree_item; +extern void set_proc_self_fd(int fd); extern int clone_service_fd(int id); extern int init_service_fd(void); extern int get_service_fd(enum sfd_type type); diff --git a/criu/util.c b/criu/util.c index 386c755a6..88f4914a0 100644 --- a/criu/util.c +++ b/criu/util.c @@ -296,7 +296,7 @@ static pid_t open_proc_pid = PROC_NONE; static pid_t open_proc_self_pid; static int open_proc_self_fd = -1; -static inline void set_proc_self_fd(int fd) +void set_proc_self_fd(int fd) { if (open_proc_self_fd >= 0) close(open_proc_self_fd);