From 4fc7cdecf5611f5b32a2b5ea4c99edcd83aa7d32 Mon Sep 17 00:00:00 2001 From: Kirill Tkhai Date: Wed, 10 Jan 2018 17:02:35 +0300 Subject: [PATCH] files: Close old service fd in clone_service_fd() Next patches will make service_fd_base not contant. It will be "floating" and change from task to task. This patch makes preparation for that: it closes old service fd after it's duplicated. Currently the code is unused as in case of !(rsti(me)->clone_flags & CLONE_FILES), the child has the same id as its parent, and the duplication just does not occur. Signed-off-by: Kirill Tkhai --- criu/util.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/criu/util.c b/criu/util.c index e4802d26d..0b4995e9d 100644 --- a/criu/util.c +++ b/criu/util.c @@ -563,6 +563,8 @@ int clone_service_fd(struct pstree_item *me) continue; pr_perror("Unable to clone %d->%d", old, new); } + if (ret >= 0 && !(rsti(me)->clone_flags & CLONE_FILES)) + close(old); } service_fd_id = id;