From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: ACJfBotgYAHq1jz4NK6GuhhFVNqBpwOOzrUIewhzwhQha3PgzzJvutP2ITO6XCGT7cWGk2FpKw0N ARC-Seal: i=1; a=rsa-sha256; t=1516276904; cv=none; d=google.com; s=arc-20160816; b=eyipzrzpCOBoCLUL1SMSnl97sD/MO1F/sTpTLjAY0ou9NLl0SBUzU9X4BhV+baSgLG eksftRt26X2OLikDLejGXYy1za1p2GLLjne1OtqHRjlhunpD6m9DHraiNE4rYSDbCW+O 8hN5uOCp5m6bNSg0kVpgCoB5FmP6mtU+AR+hSOng4Vy/1BoCtIV/ztBsYTxLCkHcXTJ4 tSHPyg9bdz5BB0pHHMoZqljMacPff1Et6heA8ECcUy5b5Id66FTiZWJleTOo5GD1xfkx ubNVtF1YD/kxjGtBpkOao+lBMx5YQH2vr35pFPkNBEKjV1pKJKcfgBsqG4uLL1zNB+R9 6vaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from:dmarc-filter :arc-authentication-results; bh=xxx7ZWmfEUP8glmGgF+KvApkqQTJ1j+2YapPeuXWko4=; b=LjLkteHk3/6oW4yIiPVs6RRmyRqmUtc0N6QsTs9A7nx3CQb8HHrr1F3oIusDqVUm60 jSNXYWwf+HMUEmwsnO07caAxLIakEG/8T1oL7ICeNg9kfLV6cTcvFM/k/7NdjeR/2rmV 1LswZLzZRi78EhU+3vcv+lmfFt9FZSxKJJexZ9xs6//0xdioUdAmeSbw4LX53OPKla94 12XXwIdeDeMf+rVlEJBHbEvbpguYgJ/UTJsp9xNIKdS93t74oztyjjOiLsn8XnWUg2F3 ClL4VlIO/V3KCbRGzzWeV0XYFXMm3RprwNMNSxv4viaN7c4Ev7guJuETdAv9/bKDhbup Yshg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of mhiramat@kernel.org designates 198.145.29.99 as permitted sender) smtp.mailfrom=mhiramat@kernel.org Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of mhiramat@kernel.org designates 198.145.29.99 as permitted sender) smtp.mailfrom=mhiramat@kernel.org DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7A29D21718 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=mhiramat@kernel.org From: Masami Hiramatsu To: Ingo Molnar , David Woodhouse Cc: Masami Hiramatsu , linux-kernel@vger.kernel.org, Andi Kleen , Greg Kroah-Hartman , Arjan van de Ven , Peter Zijlstra , Ananth N Mavinakayanahalli , Thomas Gleixner , "H . Peter Anvin" Subject: [PATCH v1 tip/master 1/3] retpoline: Introduce start/end markers of indirect thunk Date: Thu, 18 Jan 2018 21:01:19 +0900 Message-Id: <151627687913.24682.16564356005083781238.stgit@devbox> X-Mailer: git-send-email 2.13.6 In-Reply-To: <151627684798.24682.2979775081582774869.stgit@devbox> References: <151627684798.24682.2979775081582774869.stgit@devbox> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1589931570462984334?= X-GMAIL-MSGID: =?utf-8?q?1589931570462984334?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: Introduce start/end markers of __x86_indirect_thunk_* functions. These thunk functions are placed in .text.__x86.indirect_thunk.* sections. So this puts those sections in the end of kernel text and adds __indirect_thunk_start/end so that other subsystem (e.g. kprobes) can identify it. Signed-off-by: Masami Hiramatsu --- arch/x86/include/asm/nospec-branch.h | 3 +++ arch/x86/kernel/vmlinux.lds.S | 35 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h index 7b45d8424150..19ba5ad19c65 100644 --- a/arch/x86/include/asm/nospec-branch.h +++ b/arch/x86/include/asm/nospec-branch.h @@ -194,6 +194,9 @@ enum spectre_v2_mitigation { SPECTRE_V2_IBRS, }; +extern char __indirect_thunk_start[]; +extern char __indirect_thunk_end[]; + /* * On VMEXIT we must ensure that no RSB predictions learned in the guest * can be followed in the host, by overwriting the RSB completely. Both diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index 1e413a9326aa..1a5a663620ce 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S @@ -74,6 +74,9 @@ jiffies_64 = jiffies; #endif +#define X86_INDIRECT_THUNK(reg) \ + *(.text.__x86.indirect_thunk.##reg) + PHDRS { text PT_LOAD FLAGS(5); /* R_E */ data PT_LOAD FLAGS(6); /* RW_ */ @@ -124,6 +127,38 @@ SECTIONS ASSERT(. - _entry_trampoline == PAGE_SIZE, "entry trampoline is too big"); #endif +#ifdef CONFIG_RETPOLINE + __indirect_thunk_start = .; +#ifdef CONFIG_X86_64 + X86_INDIRECT_THUNK(rax) + X86_INDIRECT_THUNK(rbx) + X86_INDIRECT_THUNK(rcx) + X86_INDIRECT_THUNK(rdx) + X86_INDIRECT_THUNK(rsi) + X86_INDIRECT_THUNK(rdi) + X86_INDIRECT_THUNK(rbp) + X86_INDIRECT_THUNK(rsp) + X86_INDIRECT_THUNK(r8) + X86_INDIRECT_THUNK(r9) + X86_INDIRECT_THUNK(r10) + X86_INDIRECT_THUNK(r11) + X86_INDIRECT_THUNK(r12) + X86_INDIRECT_THUNK(r13) + X86_INDIRECT_THUNK(r14) + X86_INDIRECT_THUNK(r15) +#else + X86_INDIRECT_THUNK(eax) + X86_INDIRECT_THUNK(ebx) + X86_INDIRECT_THUNK(ecx) + X86_INDIRECT_THUNK(edx) + X86_INDIRECT_THUNK(esi) + X86_INDIRECT_THUNK(edi) + X86_INDIRECT_THUNK(ebp) + X86_INDIRECT_THUNK(esp) +#endif + __indirect_thunk_end = .; +#endif + /* End of text section */ _etext = .; } :text = 0x9090