diff options
author | Ard Biesheuvel <ardb@kernel.org> | 2022-06-15 17:41:41 +0200 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2022-06-24 09:48:55 +0200 |
commit | fdfd42892f311e2b3695852036e5be23661dc590 (patch) | |
tree | 52a8521d8454ca3da3d0ff416d541909627ba9f4 /kernel/jump_label.c | |
parent | jump_label: s390: avoid pointless initial NOP patching (diff) | |
download | linux-fdfd42892f311e2b3695852036e5be23661dc590.tar.xz linux-fdfd42892f311e2b3695852036e5be23661dc590.zip |
jump_label: mips: move module NOP patching into arch code
MIPS is the only remaining architecture that needs to patch jump label
NOP encodings to initialize them at load time. So let's move the module
patching part of that from generic code into arch/mips, and drop it from
the others.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20220615154142.1574619-3-ardb@kernel.org
Diffstat (limited to 'kernel/jump_label.c')
-rw-r--r-- | kernel/jump_label.c | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/kernel/jump_label.c b/kernel/jump_label.c index b156e152d6b4..b1ac2948be79 100644 --- a/kernel/jump_label.c +++ b/kernel/jump_label.c @@ -508,7 +508,7 @@ void __init jump_label_init(void) #ifdef CONFIG_MODULES -static enum jump_label_type jump_label_init_type(struct jump_entry *entry) +enum jump_label_type jump_label_init_type(struct jump_entry *entry) { struct static_key *key = jump_entry_key(entry); bool type = static_key_type(key); @@ -596,31 +596,6 @@ static void __jump_label_mod_update(struct static_key *key) } } -/*** - * apply_jump_label_nops - patch module jump labels with arch_get_jump_label_nop() - * @mod: module to patch - * - * Allow for run-time selection of the optimal nops. Before the module - * loads patch these with arch_get_jump_label_nop(), which is specified by - * the arch specific jump label code. - */ -void jump_label_apply_nops(struct module *mod) -{ - struct jump_entry *iter_start = mod->jump_entries; - struct jump_entry *iter_stop = iter_start + mod->num_jump_entries; - struct jump_entry *iter; - - /* if the module doesn't have jump label entries, just return */ - if (iter_start == iter_stop) - return; - - for (iter = iter_start; iter < iter_stop; iter++) { - /* Only write NOPs for arch_branch_static(). */ - if (jump_label_init_type(iter) == JUMP_LABEL_NOP) - arch_jump_label_transform_static(iter, JUMP_LABEL_NOP); - } -} - static int jump_label_add_module(struct module *mod) { struct jump_entry *iter_start = mod->jump_entries; |