mirror of https://github.com/torvalds/linux.git
uprobes/x86: Add support to emulate NOP instructions
Add support to emulate all NOP instructions as the original uprobe instruction. This change speeds up uprobe on top of all NOP instructions and is a preparation for usdt probe optimization, that will be done on top of NOP5 instructions. With this change the usdt probe on top of NOP5s won't take the performance hit compared to usdt probe on top of standard NOP instructions. Suggested-by: Oleg Nesterov <oleg@redhat.com> Suggested-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Reviewed-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Andrii Nakryiko <andrii@kernel.org> Cc: Alan Maguire <alan.maguire@oracle.com> Cc: Hao Luo <haoluo@google.com> Cc: John Fastabend <john.fastabend@gmail.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Song Liu <songliubraving@fb.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/r/20250414083647.1234007-1-jolsa@kernel.org
This commit is contained in:
parent
4a3fd13054
commit
610f6e14c2
|
|
@ -840,6 +840,11 @@ static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
|
||||||
insn_byte_t p;
|
insn_byte_t p;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
/* x86_nops[insn->length]; same as jmp with .offs = 0 */
|
||||||
|
if (insn->length <= ASM_NOP_MAX &&
|
||||||
|
!memcmp(insn->kaddr, x86_nops[insn->length], insn->length))
|
||||||
|
goto setup;
|
||||||
|
|
||||||
switch (opc1) {
|
switch (opc1) {
|
||||||
case 0xeb: /* jmp 8 */
|
case 0xeb: /* jmp 8 */
|
||||||
case 0xe9: /* jmp 32 */
|
case 0xe9: /* jmp 32 */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue