x86/compat: Don't build the 32-bit VDSO if not needed
Build the 32-bit vdso only for native 32-bit or 32-bit compat is enabled. x32 should not force it to build. Signed-off-by: Brian Gerst <brgerst@gmail.com> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Borislav Petkov <bp@alien8.de> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1434974121-32575-7-git-send-email-brgerst@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
601275c3e0
commit
ab8b82ee6d
@ -8,7 +8,7 @@ KASAN_SANITIZE := n
|
|||||||
VDSO64-$(CONFIG_X86_64) := y
|
VDSO64-$(CONFIG_X86_64) := y
|
||||||
VDSOX32-$(CONFIG_X86_X32_ABI) := y
|
VDSOX32-$(CONFIG_X86_X32_ABI) := y
|
||||||
VDSO32-$(CONFIG_X86_32) := y
|
VDSO32-$(CONFIG_X86_32) := y
|
||||||
VDSO32-$(CONFIG_COMPAT) := y
|
VDSO32-$(CONFIG_IA32_EMULATION) := y
|
||||||
|
|
||||||
# files to link into the vdso
|
# files to link into the vdso
|
||||||
vobjs-y := vdso-note.o vclock_gettime.o vgetcpu.o
|
vobjs-y := vdso-note.o vclock_gettime.o vgetcpu.o
|
||||||
@ -20,7 +20,7 @@ obj-y += vma.o
|
|||||||
vdso_img-$(VDSO64-y) += 64
|
vdso_img-$(VDSO64-y) += 64
|
||||||
vdso_img-$(VDSOX32-y) += x32
|
vdso_img-$(VDSOX32-y) += x32
|
||||||
vdso_img-$(VDSO32-y) += 32-int80
|
vdso_img-$(VDSO32-y) += 32-int80
|
||||||
vdso_img-$(CONFIG_COMPAT) += 32-syscall
|
vdso_img-$(CONFIG_IA32_EMULATION) += 32-syscall
|
||||||
vdso_img-$(VDSO32-y) += 32-sysenter
|
vdso_img-$(VDSO32-y) += 32-sysenter
|
||||||
|
|
||||||
obj-$(VDSO32-y) += vdso32-setup.o
|
obj-$(VDSO32-y) += vdso32-setup.o
|
||||||
@ -126,7 +126,7 @@ $(obj)/vdsox32.so.dbg: $(src)/vdsox32.lds $(vobjx32s) FORCE
|
|||||||
# Build multiple 32-bit vDSO images to choose from at boot time.
|
# Build multiple 32-bit vDSO images to choose from at boot time.
|
||||||
#
|
#
|
||||||
vdso32.so-$(VDSO32-y) += int80
|
vdso32.so-$(VDSO32-y) += int80
|
||||||
vdso32.so-$(CONFIG_COMPAT) += syscall
|
vdso32.so-$(CONFIG_IA32_EMULATION) += syscall
|
||||||
vdso32.so-$(VDSO32-y) += sysenter
|
vdso32.so-$(VDSO32-y) += sysenter
|
||||||
|
|
||||||
vdso32-images = $(vdso32.so-y:%=vdso32-%.so)
|
vdso32-images = $(vdso32.so-y:%=vdso32-%.so)
|
||||||
|
@ -177,7 +177,7 @@ up_fail:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_X86_32) || defined(CONFIG_COMPAT)
|
#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION)
|
||||||
static int load_vdso32(void)
|
static int load_vdso32(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@ -219,8 +219,11 @@ int compat_arch_setup_additional_pages(struct linux_binprm *bprm,
|
|||||||
return map_vdso(&vdso_image_x32, true);
|
return map_vdso(&vdso_image_x32, true);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_IA32_EMULATION
|
||||||
return load_vdso32();
|
return load_vdso32();
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
|
@ -78,7 +78,7 @@ typedef struct user_fxsr_struct elf_fpxregset_t;
|
|||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
extern unsigned int vdso64_enabled;
|
extern unsigned int vdso64_enabled;
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_X86_32) || defined(CONFIG_COMPAT)
|
#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION)
|
||||||
extern unsigned int vdso32_enabled;
|
extern unsigned int vdso32_enabled;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user