On 04/09, Jiri Olsa wrote: > > > Just it looks a bit strange to me. Even if we do not have a use-case > > for other nops, why we can't emulate them all just for consistency? > > we can, I went with nop5 just for simplicity, if you think > having all nops support is better, let's do that
Well... Let me repeat, I am not really arguing and I do not want to delay your next changes. We can always cleanup this code later. Please see below. > I checked and compact process executes 64bit nops just fine, > so we should be ok there OK. Then, for your original patch: Acked-by: Oleg Nesterov <o...@redhat.com> I'd only ask to define is_nop5_insn/emulate_nop5_insn regardless of CONFIG_X86_64. I understand that we have no reason to emulate nop5 on the 32-bit kernel, but at the same time I don't see any reason to complicate this code to explicitly "nack" nop5 in this case. As for the new version below: > --- a/arch/x86/kernel/uprobes.c > +++ b/arch/x86/kernel/uprobes.c > @@ -840,12 +840,16 @@ static int branch_setup_xol_ops(struct arch_uprobe > *auprobe, struct insn *insn) > insn_byte_t p; > int i; > > + /* x86_nops[i]; same as jmp with .offs = 0 */ > + for (i = 1; i <= ASM_NOP_MAX; ++i) { > + if (!memcmp(insn->kaddr, x86_nops[i], i)) > + goto setup; > + } Well, yes, I'd personally obviously prefer this version ;) Just because it looks a bit more clear/consistent to me. But this is subjective. And, > - case 0x90: /* prefix* + nop; same as jmp with .offs = 0 */ > - goto setup; No, this is wrong. Please see my reply to myself, https://lore.kernel.org/all/20250409114950.gb32...@redhat.com/ This way we can no longer emulate, say, "rep; nop". Exactly because either way memcmp(x86_nops[i]) checks the whole instruction. Probably we don't really care, but still this patch shouldn't add any "regression". So, let me repeat. Up to you. Whatever you prefer. I just tried to understand your patch. You have my ACK in any case. Oleg.