Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1620558

[tip:x86/urgent] x86/vdso: Plug race between mapping and ELF header setup

From tip-bot for Thomas Gleixner <tipbot@zytor.com>
Newsgroups linux.kernel
Subject [tip:x86/urgent] x86/vdso: Plug race between mapping and ELF header setup
Date 2017-04-10 20:00 +0200
Message-ID <tuLLB-3YK-59@gated-at.bofh.it> (permalink)
References <tuJgK-2nZ-11@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Commit-ID:  6fdc6dd90272ce7e75d744f71535cfbd8d77da81
Gitweb:     http://git.kernel.org/tip/6fdc6dd90272ce7e75d744f71535cfbd8d77da81
Author:     Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Mon, 10 Apr 2017 17:14:28 +0200
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Mon, 10 Apr 2017 18:31:41 +0200

x86/vdso: Plug race between mapping and ELF header setup

The vsyscall32 sysctl can racy against a concurrent fork when it switches
from disabled to enabled:

    arch_setup_additional_pages()
	if (vdso32_enabled)
           --> No mapping
                                        sysctl.vsysscall32()
                                          --> vdso32_enabled = true
    create_elf_tables()
      ARCH_DLINFO_IA32
        if (vdso32_enabled) {
           --> Add VDSO entry with NULL pointer

Make ARCH_DLINFO_IA32 check whether the VDSO mapping has been set up for
the newly forked process or not.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Andy Lutomirski <luto@amacapital.net>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Mathias Krause <minipli@googlemail.com>
Cc: stable@vger.kernel.org
Link: http://lkml.kernel.org/r/20170410151723.602367196@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

---
 arch/x86/include/asm/elf.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
index 9d49c18..3762536 100644
--- a/arch/x86/include/asm/elf.h
+++ b/arch/x86/include/asm/elf.h
@@ -287,7 +287,7 @@ struct task_struct;
 
 #define	ARCH_DLINFO_IA32						\
 do {									\
-	if (vdso32_enabled) {						\
+	if (VDSO_CURRENT_BASE) {					\
 		NEW_AUX_ENT(AT_SYSINFO,	VDSO_ENTRY);			\
 		NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_CURRENT_BASE);	\
 	}								\

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[patch 0/3] x86/vdso: Fix enable inconsistencies and cleanup Thomas Gleixner <tglx@linutronix.de> - 2017-04-10 17:20 +0200
  [patch 2/3] x86/vdso: Plug race between mapping and ELF header setup Thomas Gleixner <tglx@linutronix.de> - 2017-04-10 17:20 +0200
    Re: [patch 2/3] x86/vdso: Plug race between mapping and ELF header setup Andy Lutomirski <luto@amacapital.net> - 2017-04-10 18:00 +0200
    [tip:x86/urgent] x86/vdso: Plug race between mapping and ELF header  setup tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-04-10 20:00 +0200
  [patch 3/3] x86/vdso: Sanitize vdso*_enabled handling Thomas Gleixner <tglx@linutronix.de> - 2017-04-10 17:20 +0200
    Re: [patch 3/3] x86/vdso: Sanitize vdso*_enabled handling Andy Lutomirski <luto@amacapital.net> - 2017-04-10 18:00 +0200
      Re: [patch 3/3] x86/vdso: Sanitize vdso*_enabled handling Thomas Gleixner <tglx@linutronix.de> - 2017-04-10 18:30 +0200
  [patch 1/3] x86/vdso: Ensure vdso32_enabled gets set to valid values  only Thomas Gleixner <tglx@linutronix.de> - 2017-04-10 17:20 +0200
    [tip:x86/urgent] x86/vdso: Ensure vdso32_enabled gets set to valid  values only tip-bot for Mathias Krause <tipbot@zytor.com> - 2017-04-10 18:40 +0200

csiph-web