From 961477f9824e9ff5b4592611330633a53e9eefe1 Mon Sep 17 00:00:00 2001 From: Adrian Reber Date: Wed, 26 Oct 2016 21:02:37 +0200 Subject: [PATCH] Added upstream patch to fix #1381351 ("criu: mount_resolve_path(): criu killed by SIGSEGV") --- ...ec5b89bcda9f6b57e79315a54e340926f1aa.patch | 55 +++++++++++++++++++ criu.spec | 8 ++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 5988ec5b89bcda9f6b57e79315a54e340926f1aa.patch diff --git a/5988ec5b89bcda9f6b57e79315a54e340926f1aa.patch b/5988ec5b89bcda9f6b57e79315a54e340926f1aa.patch new file mode 100644 index 0000000..7d58043 --- /dev/null +++ b/5988ec5b89bcda9f6b57e79315a54e340926f1aa.patch @@ -0,0 +1,55 @@ +From 5988ec5b89bcda9f6b57e79315a54e340926f1aa Mon Sep 17 00:00:00 2001 +From: Andrei Vagin +Date: Tue, 25 Oct 2016 04:41:00 +0300 +Subject: [PATCH] cr-check: fill up a root task mount namespace + +A root mount namespace list is used to resolve paths to +unix sockets if they are placed on btrfs. + +This patch fixes a crash: + #0 mount_resolve_path at criu/mount.c:213 + #1 phys_stat_resolve_dev at criu/mount.c:240 + #2 phys_stat_dev_match at criu/mount.c:256 + #3 unix_process_name at criu/sk-unix.c:565 + #4 unix_collect_one at criu/sk-unix.c:620 + #5 unix_receive_one at criu/sk-unix.c:692 + #6 nlmsg_receive at criu/libnetlink.c:45 + #7 do_rtnl_req at criu/libnetlink.c:119 + #8 do_collect_req at criu/sockets.c:610 + #9 collect_sockets at criu/sockets.c:636 + +travis-ci: success for cr-check: fill up a root task mount namespace +https://bugzilla.redhat.com/show_bug.cgi?id=1381351 +Signed-off-by: Andrei Vagin +Signed-off-by: Pavel Emelyanov +--- + criu/cr-check.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/criu/cr-check.c b/criu/cr-check.c +index 352e9c7..6456486 100644 +--- a/criu/cr-check.c ++++ b/criu/cr-check.c +@@ -1017,7 +1017,7 @@ static int (*chk_feature)(void); + } while (0) + int cr_check(void) + { +- struct ns_id ns = { .type = NS_CRIU, .ns_pid = PROC_SELF, .nd = &mnt_ns_desc }; ++ struct ns_id *ns; + int ret = 0; + + if (!is_root_user()) +@@ -1032,9 +1032,11 @@ int cr_check(void) + if (collect_pstree_ids()) + return -1; + +- ns.id = root_item->ids->mnt_ns_id; ++ ns = lookup_ns_by_id(root_item->ids->mnt_ns_id, &mnt_ns_desc); ++ if (ns == NULL) ++ return -1; + +- mntinfo = collect_mntinfo(&ns, false); ++ mntinfo = collect_mntinfo(ns, false); + if (mntinfo == NULL) + return -1; + diff --git a/criu.spec b/criu.spec index 2b23ee9..f8f39e8 100644 --- a/criu.spec +++ b/criu.spec @@ -1,6 +1,6 @@ Name: criu Version: 2.7 -Release: 1%{?dist} +Release: 2%{?dist} Provides: crtools = %{version}-%{release} Obsoletes: crtools <= 1.0-2 Summary: Tool for Checkpoint/Restore in User-space @@ -8,6 +8,7 @@ Group: System Environment/Base License: GPLv2 URL: http://criu.org/ Source0: http://download.openvz.org/criu/criu-%{version}.tar.bz2 +Patch0: https://github.com/xemul/criu/commit/5988ec5b89bcda9f6b57e79315a54e340926f1aa.patch %if 0%{?rhel} # RHEL has no asciidoc; take man-page from Fedora 24 @@ -66,6 +67,7 @@ their content in human-readable form. %prep %setup -q -n criu-%{version} +%patch0 -p1 %build # %{?_smp_mflags} does not work @@ -122,6 +124,10 @@ rm -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig %changelog +* Wed Oct 19 2016 Adrian Reber - 2.7-2 +- Added upstream patch to fix #1381351 + ("criu: mount_resolve_path(): criu killed by SIGSEGV") + * Wed Oct 19 2016 Adrian Reber - 2.7-1 - Update to 2.7