|
@@ -599,6 +599,14 @@ static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
|
|
|
branch_clear_offset(auprobe, insn);
|
|
|
break;
|
|
|
|
|
|
+ case 0x0f:
|
|
|
+ if (insn->opcode.nbytes != 2)
|
|
|
+ return -ENOSYS;
|
|
|
+ /*
|
|
|
+ * If it is a "near" conditional jmp, OPCODE2() - 0x10 matches
|
|
|
+ * OPCODE1() of the "short" jmp which checks the same condition.
|
|
|
+ */
|
|
|
+ opc1 = OPCODE2(insn) - 0x10;
|
|
|
default:
|
|
|
if (!is_cond_jmp_opcode(opc1))
|
|
|
return -ENOSYS;
|