From b4976463da4947f9ec939dfcdd9b23aa64c38160 Mon Sep 17 00:00:00 2001 From: snoweay Date: Mon, 1 Mar 2021 15:09:01 +0800 Subject: [PATCH] criu: Fix bugs of vdso use wrong offsets Backport patch of vdso-use-correct-offsets-to-remap-vdso-and-vvar-mapp.patch Signed-off-by: snoweay --- ...-offsets-to-remap-vdso-and-vvar-mapp.patch | 35 +++++++++++++++++++ criu.spec | 7 +++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 0011-vdso-use-correct-offsets-to-remap-vdso-and-vvar-mapp.patch diff --git a/0011-vdso-use-correct-offsets-to-remap-vdso-and-vvar-mapp.patch b/0011-vdso-use-correct-offsets-to-remap-vdso-and-vvar-mapp.patch new file mode 100644 index 0000000..6e80740 --- /dev/null +++ b/0011-vdso-use-correct-offsets-to-remap-vdso-and-vvar-mapp.patch @@ -0,0 +1,35 @@ +From 3482094d4d62fcca1e90f1762b7862bd9ae95fea Mon Sep 17 00:00:00 2001 +From: Andrei Vagin +Date: Tue, 4 Feb 2020 23:13:43 -0800 +Subject: [PATCH] vdso: use correct offsets to remap vdso and vvar mappings + +In the current version, the offsets of remapping vvar and vdso regions +are mixed up. + +If vdso is before vvar, vvar has to be mapped with the vdso_size offset. +if vvar is before vdso, vdso has to be mapped with the vvar_size offset. + +Signed-off-by: Andrei Vagin +--- + criu/pie/parasite-vdso.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/criu/pie/parasite-vdso.c b/criu/pie/parasite-vdso.c +index 38da766..3a1684d 100644 +--- a/criu/pie/parasite-vdso.c ++++ b/criu/pie/parasite-vdso.c +@@ -119,9 +119,9 @@ int vdso_do_park(struct vdso_maps *rt, unsigned long addr, unsigned long space) + BUG_ON((vdso_size + vvar_size) < space); + + if (rt->sym.vdso_before_vvar) +- return park_at(rt, addr, addr + vvar_size); ++ return park_at(rt, addr, addr + vdso_size); + else +- return park_at(rt, addr + vdso_size, addr); ++ return park_at(rt, addr + vvar_size, addr); + } + + #ifndef CONFIG_COMPAT +-- +2.9.5 + diff --git a/criu.spec b/criu.spec index a00980c..e880926 100644 --- a/criu.spec +++ b/criu.spec @@ -1,6 +1,6 @@ Name: criu Version: 3.13 -Release: 8 +Release: 9 Provides: crtools = %{version}-%{release} Obsoletes: crtools <= 1.0-2 Summary: A tool of Checkpoint/Restore in User-space @@ -25,6 +25,7 @@ Patch0007: 0007-clone3-handle-clone3-with-CLONE_PARENT.patch Patch0008: 0008-aarch64-use-clone3-if-possible.patch Patch0009: 0009-criu-dump-and-restore-cpu-affinity-of-each-thread.patch Patch0010: 0010-vdso-fix-segmentation-fault-caused-by-char-pointer-a.patch +Patch0011: 0011-vdso-use-correct-offsets-to-remap-vdso-and-vvar-mapp.patch %description Checkpoint/Restore in Userspace(CRIU),is a software tool for the linux operating system. @@ -98,6 +99,10 @@ chmod 0755 %{buildroot}/run/%{name}/ %doc %{_mandir}/man1/{compel.1*,crit.1*} %changelog +* Mon Mar 1 2021 snoweay - 3.13-9 +- Fix bug of one vdso segmentfault. + Use correct offsets to remap vdso and vvar mappings. + * Fri Feb 26 2021 snoweay - 3.13-8 - Fix one vdso coredump bug. - Use clone3 to specify restoring task pid. -- Gitee