Messages in this thread | | | Date | Thu, 27 Jul 2017 16:02:05 +0900 | From | Masami Hiramatsu <> | Subject | Re: Doubled "opcode != 0x9a" check |
| |
On Wed, 26 Jul 2017 21:55:34 +0200 Denys Vlasenko <vda.linux@googlemail.com> wrote:
> commit bd0b90676c30fe640e7ead919b3e38846ac88ab7 > Author: Masami Hiramatsu <mhiramat@kernel.org> > Date: Wed Mar 29 13:56:56 2017 +0900 > > kprobes/x86: Fix kprobe-booster not to boost far call instructions > > Fix the kprobe-booster not to boost far call instruction, > because a call may store the address in the single-step > execution buffer to the stack, which should be modified > after single stepping. > > Currently, this instruction will be filtered as not > boostable in resume_execution(), so this is not a > critical issue. > ... case 0x70: > return 0; /* can't boost conditional jump */ > + case 0x90: > + return opcode != 0x9a; /* can't boost call far */ > case 0xc0: > > > Masami. You missed the fact that later, there is this:
Oops, right. Hmm, it should be reverted. Ingo, could you revert this commit?
Thank you!
> > default: > /* segment override prefixes are boostable */ > if (opcode == 0x26 || opcode == 0x36 || opcode == 0x3e) > goto retry; /* prefixes */ > /* CS override prefix and call are not boostable */ > return (opcode != 0x2e && opcode != 0x9a); > ^^^^^^^^^^^^^^^^
-- Masami Hiramatsu <mhiramat@kernel.org>
| |