This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH -tip v5 2/7] kprobes: checks probe address is instruction boudary on x86


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]