From 9e5c0634ff2f3333c8be8561b03a66afe77b2e37 Mon Sep 17 00:00:00 2001 From: Dmitry Safonov Date: Thu, 25 Jul 2019 23:01:13 +0100 Subject: [PATCH] vdso: Add compatible property to vdso_maps We need to differ compatible (ia32) vdso maps from x86_64. That dictates ABI on vdso code. According to that, the decision to (not) use gettimeofday() from vdso in 64-bit restorer. Signed-off-by: Dmitry Safonov Signed-off-by: Andrei Vagin --- criu/include/util-vdso.h | 1 + criu/vdso.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/criu/include/util-vdso.h b/criu/include/util-vdso.h index c74360c87..33b7411de 100644 --- a/criu/include/util-vdso.h +++ b/criu/include/util-vdso.h @@ -38,6 +38,7 @@ struct vdso_maps { unsigned long vdso_start; unsigned long vvar_start; struct vdso_symtable sym; + bool compatible; }; #define VDSO_SYMBOL_INIT { .offset = VDSO_BAD_ADDR, } diff --git a/criu/vdso.c b/criu/vdso.c index 257cbcd92..50b8b8dba 100644 --- a/criu/vdso.c +++ b/criu/vdso.c @@ -597,7 +597,8 @@ int vdso_init_restore(void) vdso_maps.sym = kdat.vdso_sym; #ifdef CONFIG_COMPAT - vdso_maps_compat.sym = kdat.vdso_sym_compat; + vdso_maps_compat.sym = kdat.vdso_sym_compat; + vdso_maps_compat.compatible = true; #endif return 0; @@ -621,7 +622,8 @@ int kerndat_vdso_fill_symtable(void) pr_err("Failed to fill compat vdso symtable\n"); return -1; } - kdat.vdso_sym_compat = vdso_maps_compat.sym; + vdso_maps_compat.compatible = true; + kdat.vdso_sym_compat = vdso_maps_compat.sym; #endif return 0;