summaryrefslogtreecommitdiffstats
path: root/kernel/jump_label.c
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2022-06-15 17:41:42 +0200
committerPeter Zijlstra <peterz@infradead.org>2022-06-24 09:48:55 +0200
commit7e6b9db27de9f69a705c1a046d45882c768e16c3 (patch)
tree4d17aca7fd1d19374a41639fede3095b1117bb0e /kernel/jump_label.c
parentjump_label: mips: move module NOP patching into arch code (diff)
downloadlinux-7e6b9db27de9f69a705c1a046d45882c768e16c3.tar.xz
linux-7e6b9db27de9f69a705c1a046d45882c768e16c3.zip
jump_label: make initial NOP patching the special case
Instead of defaulting to patching NOP opcodes at init time, and leaving it to the architectures to override this if this is not needed, switch to a model where doing nothing is the default. This is the common case by far, as only MIPS requires NOP patching at init time. On all other architectures, the correct encodings are emitted by the compiler and so no initial patching is needed. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20220615154142.1574619-4-ardb@kernel.org
Diffstat (limited to 'kernel/jump_label.c')
-rw-r--r--kernel/jump_label.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/kernel/jump_label.c b/kernel/jump_label.c
index b1ac2948be79..714ac4c3b556 100644
--- a/kernel/jump_label.c
+++ b/kernel/jump_label.c
@@ -332,17 +332,13 @@ static int __jump_label_text_reserved(struct jump_entry *iter_start,
return 0;
}
-/*
- * Update code which is definitely not currently executing.
- * Architectures which need heavyweight synchronization to modify
- * running code can override this to make the non-live update case
- * cheaper.
- */
-void __weak __init_or_module arch_jump_label_transform_static(struct jump_entry *entry,
- enum jump_label_type type)
+#ifndef arch_jump_label_transform_static
+static void arch_jump_label_transform_static(struct jump_entry *entry,
+ enum jump_label_type type)
{
- arch_jump_label_transform(entry, type);
+ /* nothing to do on most architectures */
}
+#endif
static inline struct jump_entry *static_key_entries(struct static_key *key)
{