diff --git a/criu/cr-dump.c b/criu/cr-dump.c index 47e8cf95f..37084f0e8 100644 --- a/criu/cr-dump.c +++ b/criu/cr-dump.c @@ -1565,7 +1565,7 @@ int cr_pre_dump_tasks(pid_t pid) if (vdso_init()) goto err; - if (connect_to_page_server()) + if (connect_to_page_server() < 0) goto err; if (setup_alarm_handler()) @@ -1761,7 +1761,7 @@ int cr_dump_tasks(pid_t pid) goto err; } - if (connect_to_page_server()) + if (connect_to_page_server() < 0) goto err; if (setup_alarm_handler()) diff --git a/criu/page-xfer.c b/criu/page-xfer.c index af02a3468..41aea4ee5 100644 --- a/criu/page-xfer.c +++ b/criu/page-xfer.c @@ -906,7 +906,7 @@ out: * on urgent data is the smartest mode ever. */ tcp_cork(page_server_sk, true); - return 0; + return page_server_sk; } int disconnect_from_page_server(void) diff --git a/criu/uffd.c b/criu/uffd.c index afad95208..cec4c214d 100644 --- a/criu/uffd.c +++ b/criu/uffd.c @@ -847,6 +847,17 @@ close_uffd: return -1; } +static int prepare_page_server_socket(void) +{ + int sk; + + sk = connect_to_page_server(); + if (sk < 0) + return -1; + + return 0; +} + int cr_lazy_pages(bool daemon) { struct epoll_event *events; @@ -894,7 +905,7 @@ int cr_lazy_pages(bool daemon) if (prepare_uffds(lazy_sk, epollfd)) return -1; - if (connect_to_page_server()) + if (prepare_page_server_socket()) return -1; ret = handle_requests(epollfd, events);