Skip to content

Commit d093601

Browse files
jbeulichH. Peter Anvin
authored andcommitted
x86-32, vdso: Fix vDSO build error due to missing align_vdso_addr()
Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. [ hpa: vdso_addr() is never actually used on x86-32, as calculate_addr in map_vdso() is always false. It ought to be possible to clean this up further, but this fixes the immediate problem. ] Signed-off-by: Jan Beulich <jbeulich@suse.com> Link: http://lkml.kernel.org/r/53B5863B02000078000204D5@mail.emea.novell.com Acked-by: Andy Lutomirski <luto@amacapital.net> Tested-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Tested-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
1 parent 9f88b90 commit d093601

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

arch/x86/vdso/vma.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ struct linux_binprm;
6262
Only used for the 64-bit and x32 vdsos. */
6363
static unsigned long vdso_addr(unsigned long start, unsigned len)
6464
{
65+
#ifdef CONFIG_X86_32
66+
return 0;
67+
#else
6568
unsigned long addr, end;
6669
unsigned offset;
6770
end = (start + PMD_SIZE - 1) & PMD_MASK;
@@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned long start, unsigned len)
8386
addr = align_vdso_addr(addr);
8487

8588
return addr;
89+
#endif
8690
}
8791

8892
static int map_vdso(const struct vdso_image *image, bool calculate_addr)

0 commit comments

Comments
 (0)