|
|
@@ -22,9 +22,8 @@
|
|
|
|
|
|
#ifdef HAVE_JUMP_LABEL
|
|
|
|
|
|
-static void __arch_jump_label_transform(struct jump_entry *entry,
|
|
|
- enum jump_label_type type,
|
|
|
- bool is_static)
|
|
|
+void arch_jump_label_transform(struct jump_entry *entry,
|
|
|
+ enum jump_label_type type)
|
|
|
{
|
|
|
void *addr = (void *)entry->code;
|
|
|
u32 insn;
|
|
|
@@ -37,22 +36,18 @@ static void __arch_jump_label_transform(struct jump_entry *entry,
|
|
|
insn = aarch64_insn_gen_nop();
|
|
|
}
|
|
|
|
|
|
- if (is_static)
|
|
|
- aarch64_insn_patch_text_nosync(addr, insn);
|
|
|
- else
|
|
|
- aarch64_insn_patch_text(&addr, &insn, 1);
|
|
|
-}
|
|
|
-
|
|
|
-void arch_jump_label_transform(struct jump_entry *entry,
|
|
|
- enum jump_label_type type)
|
|
|
-{
|
|
|
- __arch_jump_label_transform(entry, type, false);
|
|
|
+ aarch64_insn_patch_text(&addr, &insn, 1);
|
|
|
}
|
|
|
|
|
|
void arch_jump_label_transform_static(struct jump_entry *entry,
|
|
|
enum jump_label_type type)
|
|
|
{
|
|
|
- __arch_jump_label_transform(entry, type, true);
|
|
|
+ /*
|
|
|
+ * We use the architected A64 NOP in arch_static_branch, so there's no
|
|
|
+ * need to patch an identical A64 NOP over the top of it here. The core
|
|
|
+ * will call arch_jump_label_transform from a module notifier if the
|
|
|
+ * NOP needs to be replaced by a branch.
|
|
|
+ */
|
|
|
}
|
|
|
|
|
|
#endif /* HAVE_JUMP_LABEL */
|