Move the check of if a jump_entry is valid to a specific function. No functional change.
Signed-off-by: Daniel Bristot de Oliveira <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Borislav Petkov <[email protected]> Cc: "H. Peter Anvin" <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: Masami Hiramatsu <[email protected]> Cc: "Steven Rostedt (VMware)" <[email protected]> Cc: Jiri Kosina <[email protected]> Cc: Josh Poimboeuf <[email protected]> Cc: "Peter Zijlstra (Intel)" <[email protected]> Cc: Chris von Recklinghausen <[email protected]> Cc: Jason Baron <[email protected]> Cc: Scott Wood <[email protected]> Cc: Marcelo Tosatti <[email protected]> Cc: Clark Williams <[email protected]> Cc: [email protected] Cc: [email protected] --- kernel/jump_label.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/kernel/jump_label.c b/kernel/jump_label.c index 65965eb1cf05..26bf54251218 100644 --- a/kernel/jump_label.c +++ b/kernel/jump_label.c @@ -376,22 +376,32 @@ static enum jump_label_type jump_label_type(struct jump_entry *entry) return enabled ^ branch; } +bool jump_label_can_update_check(struct jump_entry *entry, bool init) +{ + /* + * An entry->code of 0 indicates an entry which has been + * disabled because it was in an init text area. + */ + if (init || !jump_entry_is_init(entry)) { + if (!kernel_text_address(jump_entry_code(entry))) { + WARN_ONCE(1, "can't patch jump_label at %pS", + (void *)jump_entry_code(entry)); + return 0; + } + return 1; + } + return 0; +} + static void __jump_label_update(struct static_key *key, struct jump_entry *entry, struct jump_entry *stop, bool init) { for_each_label_entry(key, entry, stop) { - /* - * An entry->code of 0 indicates an entry which has been - * disabled because it was in an init text area. - */ - if (init || !jump_entry_is_init(entry)) { - if (kernel_text_address(jump_entry_code(entry))) - arch_jump_label_transform(entry, jump_label_type(entry)); - else - WARN_ONCE(1, "can't patch jump_label at %pS", - (void *)jump_entry_code(entry)); + if (jump_label_can_update_check(entry, init)) { + arch_jump_label_transform(entry, + jump_label_type(entry)); } } } -- 2.17.1

