1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Kernel module for testing static keys. 4 * 5 * Copyright 2015 Akamai Technologies Inc. All Rights Reserved 6 * 7 * Authors: 8 * Jason Baron <jbaron@akamai.com> 9 */ 10 11 #include <linux/module.h> 12 #include <linux/jump_label.h> 13 14 /* old keys */ 15 struct static_key base_old_true_key = STATIC_KEY_INIT_TRUE; 16 EXPORT_SYMBOL_GPL(base_old_true_key); 17 struct static_key base_inv_old_true_key = STATIC_KEY_INIT_TRUE; 18 EXPORT_SYMBOL_GPL(base_inv_old_true_key); 19 struct static_key base_old_false_key = STATIC_KEY_INIT_FALSE; 20 EXPORT_SYMBOL_GPL(base_old_false_key); 21 struct static_key base_inv_old_false_key = STATIC_KEY_INIT_FALSE; 22 EXPORT_SYMBOL_GPL(base_inv_old_false_key); 23 24 /* new keys */ 25 DEFINE_STATIC_KEY_TRUE(base_true_key); 26 EXPORT_SYMBOL_GPL(base_true_key); 27 DEFINE_STATIC_KEY_TRUE(base_inv_true_key); 28 EXPORT_SYMBOL_GPL(base_inv_true_key); 29 DEFINE_STATIC_KEY_FALSE(base_false_key); 30 EXPORT_SYMBOL_GPL(base_false_key); 31 DEFINE_STATIC_KEY_FALSE(base_inv_false_key); 32 EXPORT_SYMBOL_GPL(base_inv_false_key); 33 34 static void invert_key(struct static_key *key) 35 { 36 if (static_key_enabled(key)) 37 static_key_disable(key); 38 else 39 static_key_enable(key); 40 } 41 42 static int __init test_static_key_base_init(void) 43 { 44 invert_key(&base_inv_old_true_key); 45 invert_key(&base_inv_old_false_key); 46 invert_key(&base_inv_true_key.key); 47 invert_key(&base_inv_false_key.key); 48 49 return 0; 50 } 51 52 static void __exit test_static_key_base_exit(void) 53 { 54 } 55 56 module_init(test_static_key_base_init); 57 module_exit(test_static_key_base_exit); 58 59 MODULE_AUTHOR("Jason Baron <jbaron@akamai.com>"); 60 MODULE_DESCRIPTION("Kernel module to support testing static keys"); 61 MODULE_LICENSE("GPL"); 62