projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
300176a
)
x86: Fix off-by-one in instruction decoder
author
Peter Zijlstra
<
[email protected]
>
Tue, 16 Dec 2014 10:46:14 +0000
(11:46 +0100)
committer
Ingo Molnar
<
[email protected]
>
Fri, 9 Jan 2015 10:12:26 +0000
(11:12 +0100)
Stephane reported that the PEBS fixup was broken by the recent commit to
the instruction decoder. The thing had an off-by-one which resulted in
not being able to decode the last instruction and always bail.
Reported-by: Stephane Eranian <
[email protected]
>
Fixes: 6ba48ff46f76 ("x86: Remove arbitrary instruction size limit in instruction decoder")
Signed-off-by: Peter Zijlstra (Intel) <
[email protected]
>
Cc:
[email protected]
# 3.18
Cc: <
[email protected]
>
Cc: Jiri Olsa <
[email protected]
>
Cc: Liang Kan <
[email protected]
>
Cc: Arnaldo Carvalho de Melo <
[email protected]
>
Cc: Dave Hansen <
[email protected]
>
Cc: Jim Keniston <
[email protected]
>
Cc: Linus Torvalds <
[email protected]
>
Cc: Masami Hiramatsu <
[email protected]
>
Link:
http://lkml.kernel.org/r/
[email protected]
Signed-off-by: Ingo Molnar <
[email protected]
>
arch/x86/lib/insn.c
patch
|
blob
|
history
diff --git
a/arch/x86/lib/insn.c
b/arch/x86/lib/insn.c
index 2480978b31cc29e5d34cd54bbd05394eeee4b484..1313ae6b478b6c439741ee032a8c33b86868ee2c 100644
(file)
--- a/
arch/x86/lib/insn.c
+++ b/
arch/x86/lib/insn.c
@@
-28,7
+28,7
@@
/* Verify next sizeof(t) bytes can be on the same instruction */
#define validate_next(t, insn, n) \
- ((insn)->next_byte + sizeof(t) + n < (insn)->end_kaddr)
+ ((insn)->next_byte + sizeof(t) + n <
=
(insn)->end_kaddr)
#define __get_next(t, insn) \
({ t r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; })