From mboxrd@z Thu Jan 1 00:00:00 1970 From: Masami Hiramatsu Subject: Re: [PATCH -tip v5 2/7] kprobes: checks probe address is instruction boudary on x86 Date: Mon, 11 May 2009 11:14:36 -0400 Message-ID: <4A0840DC.7080507@redhat.com> References: <20090509004829.5505.38720.stgit@localhost.localdomain> <20090509004847.5505.37957.stgit@localhost.localdomain> <4A083DAD.8000009@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Ingo Molnar , lkml , systemtap , kvm , Ananth N Mavinakayanahalli , Jim Keniston To: Steven Rostedt Return-path: In-Reply-To: <4A083DAD.8000009@redhat.com> List-Unsubscribe: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org List-Id: kvm.vger.kernel.org Masami Hiramatsu wrote: >>> + if (!kallsyms_lookup(paddr, NULL, &offset, NULL, __dummy_buf)) >>> + return 0; >>> + >>> + /* Decode instructions */ >>> + addr = paddr - offset; >>> + while (addr < paddr) { >>> + insn_init_kernel(&insn, (void *)addr); >>> + insn_get_opcode(&insn); >>> + if (OPCODE1(&insn) == BREAKPOINT_INSTRUCTION) { >>> + ret = recover_probed_instruction(buf, addr); >> Oh, the above puts back the original op code. That is why it is OK? > > Oops, no. I have to use get_kprobe() instead. Thanks! Ah, I forgot another possibility. There might be another subsystem, like kgdb, will put their break point on the kernel. In that case, decoder will decode the instruction is a break point instruction and the first opcode is int3. So, this part is correct. In the future, we need to add a generic recover_instruction() code for those text modification subsystems. Thank you, -- Masami Hiramatsu Software Engineer Hitachi Computer Products (America) Inc. Software Solutions Division e-mail: mhiramat@redhat.com