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 <dima@arista.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
This commit is contained in:
Dmitry Safonov 2019-07-25 23:01:13 +01:00 committed by Andrei Vagin
parent 23960fe60e
commit 9e5c0634ff
2 changed files with 5 additions and 2 deletions

View file

@ -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, }

View file

@ -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;