Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1609279

[RFC PATCH tip/master 1/8] kprobes/x86: Fix not to boost call far instruction

From Masami Hiramatsu <mhiramat@kernel.org>
Newsgroups linux.kernel
Subject [RFC PATCH tip/master 1/8] kprobes/x86: Fix not to boost call far instruction
Date 2017-03-26 05:30 +0200
Message-ID <tp72p-2dq-7@gated-at.bofh.it> (permalink)
References <tp72p-2dq-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Fix kprobe-booster not to boost call far instruction,
because call may store the address in singlestep
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.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
 arch/x86/kernel/kprobes/core.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
index 993fa4f..9eae5a6 100644
--- a/arch/x86/kernel/kprobes/core.c
+++ b/arch/x86/kernel/kprobes/core.c
@@ -200,6 +200,8 @@ int can_boost(kprobe_opcode_t *opcodes, void *addr)
 		return (opcode != 0x62 && opcode != 0x67);
 	case 0x70:
 		return 0; /* can't boost conditional jump */
+	case 0x90:
+		return opcode != 0x9a;	/* can't boost call far */
 	case 0xc0:
 		/* can't boost software-interruptions */
 		return (0xc1 < opcode && opcode < 0xcc) || opcode == 0xcf;

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[RFC PATCH tip/master 1/8] kprobes/x86: Fix not to boost call far instruction Masami Hiramatsu <mhiramat@kernel.org> - 2017-03-26 05:30 +0200

csiph-web