From cfd461442ec5fefb79991c91aee565a0c77b7371 Mon Sep 17 00:00:00 2001 From: Jeremy Fitzhardinge Date: Thu, 29 Sep 2011 11:10:05 -0700 Subject: [PATCH] --- yaml --- r: 274735 b: refs/heads/master c: 37348804e0289087d21ae8bff4c0732030a3c6ac h: refs/heads/master i: 274733: 4197778d49d3b7d3e6ac345820902c4aa422eb29 274731: f008b9c126a1f249bc3df5c0101851168b63db77 274727: 78979d33ec7b0c361aa3e3a146e07ba8ad25299f 274719: 8d837a7b042931b3125c674d1b3a7b4ac20601d8 v: v3 --- [refs] | 2 +- trunk/include/linux/jump_label.h | 3 +-- trunk/kernel/jump_label.c | 20 ++++++++------------ 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index c4b952c2ebb7..115fbc7f187e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 189c3fd68c7016e37c1ffd7a00009e2c944a9d06 +refs/heads/master: 37348804e0289087d21ae8bff4c0732030a3c6ac diff --git a/trunk/include/linux/jump_label.h b/trunk/include/linux/jump_label.h index 1213e9d63f79..12e804ea32ab 100644 --- a/trunk/include/linux/jump_label.h +++ b/trunk/include/linux/jump_label.h @@ -44,8 +44,7 @@ extern struct jump_entry __stop___jump_table[]; extern void jump_label_lock(void); extern void jump_label_unlock(void); extern void arch_jump_label_transform(struct jump_entry *entry, - enum jump_label_type type); -extern void arch_jump_label_text_poke_early(jump_label_t addr); + enum jump_label_type type); extern int jump_label_text_reserved(void *start, void *end); extern void jump_label_inc(struct jump_label_key *key); extern void jump_label_dec(struct jump_label_key *key); diff --git a/trunk/kernel/jump_label.c b/trunk/kernel/jump_label.c index a8ce45097f3d..059202d5b77a 100644 --- a/trunk/kernel/jump_label.c +++ b/trunk/kernel/jump_label.c @@ -121,13 +121,6 @@ static void __jump_label_update(struct jump_label_key *key, } } -/* - * Not all archs need this. - */ -void __weak arch_jump_label_text_poke_early(jump_label_t addr) -{ -} - static __init int jump_label_init(void) { struct jump_entry *iter_start = __start___jump_table; @@ -139,12 +132,15 @@ static __init int jump_label_init(void) jump_label_sort_entries(iter_start, iter_stop); for (iter = iter_start; iter < iter_stop; iter++) { - arch_jump_label_text_poke_early(iter->code); - if (iter->key == (jump_label_t)(unsigned long)key) + struct jump_label_key *iterk; + + iterk = (struct jump_label_key *)(unsigned long)iter->key; + arch_jump_label_transform(iter, jump_label_enabled(iterk) ? + JUMP_LABEL_ENABLE : JUMP_LABEL_DISABLE); + if (iterk == key) continue; - key = (struct jump_label_key *)(unsigned long)iter->key; - atomic_set(&key->enabled, 0); + key = iterk; key->entries = iter; #ifdef CONFIG_MODULES key->next = NULL; @@ -212,7 +208,7 @@ void jump_label_apply_nops(struct module *mod) return; for (iter = iter_start; iter < iter_stop; iter++) - arch_jump_label_text_poke_early(iter->code); + arch_jump_label_transform(iter, JUMP_LABEL_DISABLE); } static int jump_label_add_module(struct module *mod)