[PATCH v3 11/14] powerpc/kprobes: Support kprobes on prefixed instructions
Nicholas Piggin
npiggin at gmail.com
Wed Feb 26 18:14:15 AEDT 2020
Jordan Niethe's on February 26, 2020 2:07 pm:
> @@ -136,11 +148,14 @@ int arch_prepare_kprobe(struct kprobe *p)
> }
>
> if (!ret) {
> - patch_instruction(p->ainsn.insn, *p->addr);
> + patch_instruction(&p->ainsn.insn[0], p->addr[0]);
> + if (IS_PREFIX(insn))
> + patch_instruction(&p->ainsn.insn[1], p->addr[1]);
> p->opcode = *p->addr;
Not to single out this hunk or this patch even, but what do you reckon
about adding an instruction data type, and then use that in all these
call sites rather than adding the extra arg or doing the extra copy
manually in each place depending on prefix?
instrs_are_equal, get_user_instr, analyse_instr, patch_instruction,
etc., would all take this new instr. Places that open code a memory
access like your MCE change need some accessor
instr = *(unsigned int *)(instr_addr);
- if (!analyse_instr(&op, &tmp, instr, PPC_NO_SUFFIX)) {
+ if (IS_PREFIX(instr))
+ suffix = *(unsigned int *)(instr_addr + 4);
Becomes
read_instr(instr_addr, &instr);
if (!analyse_instr(&op, &tmp, instr)) ...
etc.
Thanks,
Nick
More information about the Linuxppc-dev
mailing list