[CRIU] [PATCH 3/4] vdso: Rework vdso processing files

Laurent Dufour ldufour at linux.vnet.ibm.com
Tue Sep 15 08:14:11 PDT 2015


On 15/09/2015 17:01, Christopher Covington wrote:
> On 09/15/2015 09:54 AM, Christopher Covington wrote:
> 
>>> -int vdso_fill_symtable(char *mem, size_t size, struct vdso_symtable *t)
>>> -{
>>> -	Elf64_Phdr *dynamic = NULL, *load = NULL;
>>> -	Elf64_Ehdr *ehdr = (void *)mem;
>>> -	Elf64_Dyn *dyn_strtab = NULL;
>>> -	Elf64_Dyn *dyn_symtab = NULL;
>>> -	Elf64_Dyn *dyn_strsz = NULL;
>>> -	Elf64_Dyn *dyn_syment = NULL;
>>> -	Elf64_Dyn *dyn_hash = NULL;
>>> -	Elf64_Word *hash = NULL;
>>> -	Elf64_Phdr *phdr;
>>> -	Elf64_Dyn *d;
>>> -
>>> -	Elf64_Word *bucket, *chain;
>>> -	Elf64_Word nbucket, nchain;
>>> -
>>> -	/*
>>> -	 * See Elf specification for this magic values.
>>> -	 */
>>> -	const char elf_ident[] = {
>>> -		0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
>>> -		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
>>> -	};
>>> -
>>> -	const char *vdso_symbols[VDSO_SYMBOL_MAX] = {
>>> -		[VDSO_SYMBOL_CLOCK_GETRES]	= VDSO_SYMBOL_CLOCK_GETRES_NAME,
>>> -		[VDSO_SYMBOL_CLOCK_GETTIME]	= VDSO_SYMBOL_CLOCK_GETTIME_NAME,
>>> -		[VDSO_SYMBOL_GETTIMEOFDAY]	= VDSO_SYMBOL_GETTIMEOFDAY_NAME,
>>> -		[VDSO_SYMBOL_RT_SIGRETURN]	= VDSO_SYMBOL_RT_SIGRETURN_NAME,
>>> -	};
> 
> It looks like making vdso_symbols global was the problem. Any objections to
> moving the definition (the version that uses architecture-provided macro
> ARCH_VDSO_SYMBOLS) inside the vdso_fill_symtable function?

The main objection here is the stack's usage, but this table is not so
big so...

Anyway, my fear here is that this hiding a more complex issue relative
to the PIE's code and the underlying relocation. Isn't it ?

Cheers,
Laurent.



More information about the CRIU mailing list