]>
Commit | Line | Data |
---|---|---|
59d5af67 | 1 | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
321d628a FG |
2 | From: Josh Poimboeuf <jpoimboe@redhat.com> |
3 | Date: Mon, 18 Sep 2017 21:43:30 -0500 | |
59d5af67 FG |
4 | Subject: [PATCH] objtool: Don't report end of section error after an empty |
5 | unwind hint | |
321d628a FG |
6 | MIME-Version: 1.0 |
7 | Content-Type: text/plain; charset=UTF-8 | |
8 | Content-Transfer-Encoding: 8bit | |
9 | ||
10 | CVE-2017-5754 | |
11 | ||
12 | If asm code specifies an UNWIND_HINT_EMPTY hint, don't warn if the | |
13 | section ends unexpectedly. This can happen with the xen-head.S code | |
14 | because the hypercall_page is "text" but it's all zeros. | |
15 | ||
16 | Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> | |
17 | Cc: Andy Lutomirski <luto@kernel.org> | |
18 | Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> | |
19 | Cc: Jiri Slaby <jslaby@suse.cz> | |
20 | Cc: Juergen Gross <jgross@suse.com> | |
21 | Cc: Linus Torvalds <torvalds@linux-foundation.org> | |
22 | Cc: Peter Zijlstra <peterz@infradead.org> | |
23 | Cc: Thomas Gleixner <tglx@linutronix.de> | |
24 | Link: http://lkml.kernel.org/r/ddafe199dd8797e40e3c2777373347eba1d65572.1505764066.git.jpoimboe@redhat.com | |
25 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | |
26 | (cherry picked from commit 00d96180dc38ef872ac471c2d3e14b067cbd895d) | |
27 | Signed-off-by: Andy Whitcroft <apw@canonical.com> | |
28 | Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> | |
29 | (cherry picked from commit 9d22f903bba24f2ac86de8a81dc1788f9957aca8) | |
30 | Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> | |
31 | --- | |
32 | tools/objtool/check.c | 7 +++++-- | |
33 | 1 file changed, 5 insertions(+), 2 deletions(-) | |
34 | ||
35 | diff --git a/tools/objtool/check.c b/tools/objtool/check.c | |
36 | index 368275de5f23..0a86fd0ac082 100644 | |
37 | --- a/tools/objtool/check.c | |
38 | +++ b/tools/objtool/check.c | |
39 | @@ -1652,11 +1652,14 @@ static int validate_branch(struct objtool_file *file, struct instruction *first, | |
40 | if (insn->dead_end) | |
41 | return 0; | |
42 | ||
43 | - insn = next_insn; | |
44 | - if (!insn) { | |
45 | + if (!next_insn) { | |
46 | + if (state.cfa.base == CFI_UNDEFINED) | |
47 | + return 0; | |
48 | WARN("%s: unexpected end of section", sec->name); | |
49 | return 1; | |
50 | } | |
51 | + | |
52 | + insn = next_insn; | |
53 | } | |
54 | ||
55 | return 0; | |
56 | -- | |
57 | 2.14.2 | |
58 |