linux/arch/x86/vdso
Andy Lutomirski 6a89d71078 x86/vdso: Error out in vdso2c if DT_RELA is present
vdso2c was checking for various types of relocations to detect when
the vdso had undefined symbols or was otherwise dependent on
relocation at load time.  Undefined symbols in the vdso would fail if
accessed at runtime, and certain implementation errors (e.g. branch
profiling or incorrect symbol visibilities) could result in data
access through the GOT that requires relocations.  This could be
as simple as:

    extern char foo;
    return foo;

Without some kind of visibility control, the compiler would assume
that foo could be interposed at load time and would generate a
relocation.

x86-64 and x32 (as opposed to i386) use explicit-addent (RELA) instead
of implicit-addent (REL) relocations for data access, and vdso2c
forgot to detect those.

Whether these bad relocations would actually fail at runtime depends
on what the linker sticks in the unrelocated references.  Nonetheless,
these relocations have no business existing in the vDSO and should be
fixed rather than silently ignored.

This error could trigger on some configurations due to branch
profiling.  The previous patch fixed that.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Link: http://lkml.kernel.org/r/74ef0c00b4d2a3b573e00a4113874e62f772e348.1403642755.git.luto@amacapital.net
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2014-06-24 13:53:57 -07:00
..
vdso32 x86/vdso: Improve the fake section headers 2014-06-19 15:45:12 -07:00
.gitignore x86, vdso: Reimplement vdso.so preparation in build-time C 2014-05-05 13:18:51 -07:00
checkundef.sh x86, vdso: Don't quote $nm in the script for checking vdso references 2010-07-27 23:52:29 -07:00
Makefile x86/vdso: Move DISABLE_BRANCH_PROFILING into the vdso makefile 2014-06-24 13:53:00 -07:00
vclock_gettime.c x86/vdso: Move DISABLE_BRANCH_PROFILING into the vdso makefile 2014-06-24 13:53:00 -07:00
vdso2c.c x86/vdso: Improve the fake section headers 2014-06-19 15:45:12 -07:00
vdso2c.h x86/vdso: Error out in vdso2c if DT_RELA is present 2014-06-24 13:53:57 -07:00
vdso32-setup.c x86, mm: Improve _install_special_mapping and fix x86 vdso naming 2014-05-20 11:38:42 -07:00
vdso-fakesections.c x86/vdso: Remove some redundant in-memory section headers 2014-06-19 15:45:26 -07:00
vdso-layout.lds.S x86/vdso: Remove some redundant in-memory section headers 2014-06-19 15:45:26 -07:00
vdso-note.S
vdso.lds.S x86/vdso: Improve the fake section headers 2014-06-19 15:45:12 -07:00
vdsox32.lds.S x86/vdso: Improve the fake section headers 2014-06-19 15:45:12 -07:00
vgetcpu.c x86: vdso: pvclock gettime support 2012-11-27 23:29:11 -02:00
vma.c x86, mm: Improve _install_special_mapping and fix x86 vdso naming 2014-05-20 11:38:42 -07:00