aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/jump_label.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/jump_label.c')
-rw-r--r--kernel/jump_label.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/jump_label.c b/kernel/jump_label.c
index 297a9247a3b3..9019f15deab2 100644
--- a/kernel/jump_label.c
+++ b/kernel/jump_label.c
@@ -58,6 +58,7 @@ static void jump_label_update(struct static_key *key, int enable);
58 58
59void static_key_slow_inc(struct static_key *key) 59void static_key_slow_inc(struct static_key *key)
60{ 60{
61 STATIC_KEY_CHECK_USE();
61 if (atomic_inc_not_zero(&key->enabled)) 62 if (atomic_inc_not_zero(&key->enabled))
62 return; 63 return;
63 64
@@ -103,12 +104,14 @@ static void jump_label_update_timeout(struct work_struct *work)
103 104
104void static_key_slow_dec(struct static_key *key) 105void static_key_slow_dec(struct static_key *key)
105{ 106{
107 STATIC_KEY_CHECK_USE();
106 __static_key_slow_dec(key, 0, NULL); 108 __static_key_slow_dec(key, 0, NULL);
107} 109}
108EXPORT_SYMBOL_GPL(static_key_slow_dec); 110EXPORT_SYMBOL_GPL(static_key_slow_dec);
109 111
110void static_key_slow_dec_deferred(struct static_key_deferred *key) 112void static_key_slow_dec_deferred(struct static_key_deferred *key)
111{ 113{
114 STATIC_KEY_CHECK_USE();
112 __static_key_slow_dec(&key->key, key->timeout, &key->work); 115 __static_key_slow_dec(&key->key, key->timeout, &key->work);
113} 116}
114EXPORT_SYMBOL_GPL(static_key_slow_dec_deferred); 117EXPORT_SYMBOL_GPL(static_key_slow_dec_deferred);
@@ -116,6 +119,7 @@ EXPORT_SYMBOL_GPL(static_key_slow_dec_deferred);
116void jump_label_rate_limit(struct static_key_deferred *key, 119void jump_label_rate_limit(struct static_key_deferred *key,
117 unsigned long rl) 120 unsigned long rl)
118{ 121{
122 STATIC_KEY_CHECK_USE();
119 key->timeout = rl; 123 key->timeout = rl;
120 INIT_DELAYED_WORK(&key->work, jump_label_update_timeout); 124 INIT_DELAYED_WORK(&key->work, jump_label_update_timeout);
121} 125}
@@ -212,6 +216,7 @@ void __init jump_label_init(void)
212 key->next = NULL; 216 key->next = NULL;
213#endif 217#endif
214 } 218 }
219 static_key_initialized = true;
215 jump_label_unlock(); 220 jump_label_unlock();
216} 221}
217 222