From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Josh Poimboeuf <jpoimboe@redhat.com>,
Andy Lutomirski <luto@kernel.org>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
David Woodhouse <dwmw2@infradead.org>,
Guenter Roeck <linux@roeck-us.net>,
"H. Peter Anvin" <hpa@zytor.com>, Juergen Gross <jgross@suse.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@kernel.org>
Subject: [PATCH 4.14 29/64] objtool: Add support for alternatives at the end of a section
Date: Mon, 5 Feb 2018 10:22:48 -0800 [thread overview]
Message-ID: <20180205182139.777435102@linuxfoundation.org> (raw)
In-Reply-To: <20180205182138.571333346@linuxfoundation.org>
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Josh Poimboeuf jpoimboe@redhat.com
commit 17bc33914bcc98ba3c6b426fd1c49587a25c0597
Now that the previous patch gave objtool the ability to read retpoline
alternatives, it shows a new warning:
arch/x86/entry/entry_64.o: warning: objtool: .entry_trampoline: don't know how to handle alternatives at end of section
This is due to the JMP_NOSPEC in entry_SYSCALL_64_trampoline().
Previously, objtool ignored this situation because it wasn't needed, and
it would have required a bit of extra code. Now that this case exists,
add proper support for it.
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Juergen Gross <jgross@suse.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/2a30a3c2158af47d891a76e69bb1ef347e0443fd.1517284349.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/objtool/check.c | 53 +++++++++++++++++++++++++++++---------------------
1 file changed, 31 insertions(+), 22 deletions(-)
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -594,7 +594,7 @@ static int handle_group_alt(struct objto
struct instruction *orig_insn,
struct instruction **new_insn)
{
- struct instruction *last_orig_insn, *last_new_insn, *insn, *fake_jump;
+ struct instruction *last_orig_insn, *last_new_insn, *insn, *fake_jump = NULL;
unsigned long dest_off;
last_orig_insn = NULL;
@@ -610,28 +610,30 @@ static int handle_group_alt(struct objto
last_orig_insn = insn;
}
- if (!next_insn_same_sec(file, last_orig_insn)) {
- WARN("%s: don't know how to handle alternatives at end of section",
- special_alt->orig_sec->name);
- return -1;
- }
-
- fake_jump = malloc(sizeof(*fake_jump));
- if (!fake_jump) {
- WARN("malloc failed");
- return -1;
+ if (next_insn_same_sec(file, last_orig_insn)) {
+ fake_jump = malloc(sizeof(*fake_jump));
+ if (!fake_jump) {
+ WARN("malloc failed");
+ return -1;
+ }
+ memset(fake_jump, 0, sizeof(*fake_jump));
+ INIT_LIST_HEAD(&fake_jump->alts);
+ clear_insn_state(&fake_jump->state);
+
+ fake_jump->sec = special_alt->new_sec;
+ fake_jump->offset = -1;
+ fake_jump->type = INSN_JUMP_UNCONDITIONAL;
+ fake_jump->jump_dest = list_next_entry(last_orig_insn, list);
+ fake_jump->ignore = true;
}
- memset(fake_jump, 0, sizeof(*fake_jump));
- INIT_LIST_HEAD(&fake_jump->alts);
- clear_insn_state(&fake_jump->state);
-
- fake_jump->sec = special_alt->new_sec;
- fake_jump->offset = -1;
- fake_jump->type = INSN_JUMP_UNCONDITIONAL;
- fake_jump->jump_dest = list_next_entry(last_orig_insn, list);
- fake_jump->ignore = true;
if (!special_alt->new_len) {
+ if (!fake_jump) {
+ WARN("%s: empty alternative at end of section",
+ special_alt->orig_sec->name);
+ return -1;
+ }
+
*new_insn = fake_jump;
return 0;
}
@@ -654,8 +656,14 @@ static int handle_group_alt(struct objto
continue;
dest_off = insn->offset + insn->len + insn->immediate;
- if (dest_off == special_alt->new_off + special_alt->new_len)
+ if (dest_off == special_alt->new_off + special_alt->new_len) {
+ if (!fake_jump) {
+ WARN("%s: alternative jump to end of section",
+ special_alt->orig_sec->name);
+ return -1;
+ }
insn->jump_dest = fake_jump;
+ }
if (!insn->jump_dest) {
WARN_FUNC("can't find alternative jump destination",
@@ -670,7 +678,8 @@ static int handle_group_alt(struct objto
return -1;
}
- list_add(&fake_jump->list, &last_new_insn->list);
+ if (fake_jump)
+ list_add(&fake_jump->list, &last_new_insn->list);
return 0;
}
next prev parent reply other threads:[~2018-02-05 18:24 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-05 18:22 [PATCH 4.14 00/64] 4.14.18-stable review Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 01/64] scripts/faddr2line: fix CROSS_COMPILE unset error Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 02/64] powerpc/64s: Wire up cpu_show_meltdown() Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 03/64] powerpc/64s: Allow control of RFI flush via debugfs Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 04/64] x86/retpoline: Remove the esp/rsp thunk Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 05/64] KVM: x86: Make indirect calls in emulator speculation safe Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 06/64] KVM: VMX: Make indirect call " Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 07/64] module/retpoline: Warn about missing retpoline in module Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 08/64] x86/cpufeatures: Add CPUID_7_EDX CPUID leaf Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 09/64] x86/cpufeatures: Add Intel feature bits for Speculation Control Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 10/64] x86/cpufeatures: Add AMD " Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 11/64] x86/msr: Add definitions for new speculation control MSRs Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 12/64] x86/pti: Do not enable PTI on CPUs which are not vulnerable to Meltdown Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 13/64] x86/cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 microcodes Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 14/64] x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 15/64] x86/alternative: Print unadorned pointers Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 16/64] x86/nospec: Fix header guards names Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 17/64] x86/bugs: Drop one "mitigation" from dmesg Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 18/64] x86/cpu/bugs: Make retpoline module warning conditional Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 19/64] x86/cpufeatures: Clean up Spectre v2 related CPUID flags Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 20/64] x86/retpoline: Simplify vmexit_fill_RSB() Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 21/64] x86/speculation: Simplify indirect_branch_prediction_barrier() Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 22/64] auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 23/64] iio: adc/accel: Fix up module licenses Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 24/64] pinctrl: pxa: pxa2xx: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 25/64] ASoC: pcm512x: " Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 26/64] KVM: nVMX: Eliminate vmcs02 pool Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 27/64] KVM: VMX: introduce alloc_loaded_vmcs Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 28/64] objtool: Improve retpoline alternative handling Greg Kroah-Hartman
2018-02-05 18:22 ` Greg Kroah-Hartman [this message]
2018-02-05 18:22 ` [PATCH 4.14 30/64] objtool: Warn on stripped section symbol Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 31/64] x86/mm: Fix overlap of i386 CPU_ENTRY_AREA with FIX_BTMAP Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 32/64] x86/spectre: Check CONFIG_RETPOLINE in command line parser Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 33/64] x86/entry/64: Remove the SYSCALL64 fast path Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 34/64] x86/entry/64: Push extra regs right away Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 35/64] x86/asm: Move status from thread_struct to thread_info Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 36/64] Documentation: Document array_index_nospec Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 37/64] array_index_nospec: Sanitize speculative array de-references Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 38/64] x86: Implement array_index_mask_nospec Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 39/64] x86: Introduce barrier_nospec Greg Kroah-Hartman
2018-02-05 18:22 ` [PATCH 4.14 40/64] x86: Introduce __uaccess_begin_nospec() and uaccess_try_nospec Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 41/64] x86/usercopy: Replace open coded stac/clac with __uaccess_{begin, end} Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 42/64] x86/uaccess: Use __uaccess_begin_nospec() and uaccess_try_nospec Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 43/64] x86/get_user: Use pointer masking to limit speculation Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 44/64] x86/syscall: Sanitize syscall table de-references under speculation Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 45/64] vfs, fdtable: Prevent bounds-check bypass via speculative execution Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 46/64] nl80211: Sanitize array index in parse_txq_params Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 47/64] x86/spectre: Report get_user mitigation for spectre_v1 Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 48/64] x86/spectre: Fix spelling mistake: "vunerable"-> "vulnerable" Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 49/64] x86/cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 50/64] x86/speculation: Use Indirect Branch Prediction Barrier in context switch Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 51/64] x86/paravirt: Remove noreplace-paravirt cmdline option Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 52/64] KVM: VMX: make MSR bitmaps per-VCPU Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 53/64] x86/kvm: Update spectre-v1 mitigation Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 54/64] x86/retpoline: Avoid retpolines for built-in __init functions Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 55/64] x86/spectre: Simplify spectre_v2 command line parsing Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 56/64] x86/pti: Mark constant arrays as __initconst Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 57/64] x86/speculation: Fix typo IBRS_ATT, which should be IBRS_ALL Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 58/64] KVM/x86: Update the reverse_cpuid list to include CPUID_7_EDX Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 59/64] KVM/x86: Add IBPB support Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 60/64] KVM/VMX: Emulate MSR_IA32_ARCH_CAPABILITIES Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 61/64] KVM/VMX: Allow direct access to MSR_IA32_SPEC_CTRL Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 62/64] KVM/SVM: " Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 63/64] serial: core: mark port as initialized after successful IRQ change Greg Kroah-Hartman
2018-02-05 18:23 ` [PATCH 4.14 64/64] fpga: region: release of_parse_phandle nodes after use Greg Kroah-Hartman
2018-02-05 22:13 ` [PATCH 4.14 00/64] 4.14.18-stable review Shuah Khan
2018-02-05 23:55 ` Dan Rue
2018-02-06 0:36 ` kernelci.org bot
2018-02-06 14:30 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180205182139.777435102@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=dwmw2@infradead.org \
--cc=hpa@zytor.com \
--cc=jgross@suse.com \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome