| 
									
										
										
										
											2019-05-29 07:17:56 -07:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0-only
 | 
					
						
							| 
									
										
										
										
											2015-07-30 03:59:44 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2015-08-03 11:42:57 +02:00
										 |  |  |  * Kernel module for testing static keys. | 
					
						
							| 
									
										
										
										
											2015-07-30 03:59:44 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Copyright 2015 Akamai Technologies Inc. All Rights Reserved | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Authors: | 
					
						
							|  |  |  |  *      Jason Baron       <jbaron@akamai.com> | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/module.h>
 | 
					
						
							|  |  |  | #include <linux/jump_label.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* old keys */ | 
					
						
							|  |  |  | struct static_key base_old_true_key = STATIC_KEY_INIT_TRUE; | 
					
						
							|  |  |  | EXPORT_SYMBOL_GPL(base_old_true_key); | 
					
						
							|  |  |  | struct static_key base_inv_old_true_key = STATIC_KEY_INIT_TRUE; | 
					
						
							|  |  |  | EXPORT_SYMBOL_GPL(base_inv_old_true_key); | 
					
						
							|  |  |  | struct static_key base_old_false_key = STATIC_KEY_INIT_FALSE; | 
					
						
							|  |  |  | EXPORT_SYMBOL_GPL(base_old_false_key); | 
					
						
							|  |  |  | struct static_key base_inv_old_false_key = STATIC_KEY_INIT_FALSE; | 
					
						
							|  |  |  | EXPORT_SYMBOL_GPL(base_inv_old_false_key); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* new keys */ | 
					
						
							|  |  |  | DEFINE_STATIC_KEY_TRUE(base_true_key); | 
					
						
							|  |  |  | EXPORT_SYMBOL_GPL(base_true_key); | 
					
						
							|  |  |  | DEFINE_STATIC_KEY_TRUE(base_inv_true_key); | 
					
						
							|  |  |  | EXPORT_SYMBOL_GPL(base_inv_true_key); | 
					
						
							|  |  |  | DEFINE_STATIC_KEY_FALSE(base_false_key); | 
					
						
							|  |  |  | EXPORT_SYMBOL_GPL(base_false_key); | 
					
						
							|  |  |  | DEFINE_STATIC_KEY_FALSE(base_inv_false_key); | 
					
						
							|  |  |  | EXPORT_SYMBOL_GPL(base_inv_false_key); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void invert_key(struct static_key *key) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if (static_key_enabled(key)) | 
					
						
							|  |  |  | 		static_key_disable(key); | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 		static_key_enable(key); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 11:42:57 +02:00
										 |  |  | static int __init test_static_key_base_init(void) | 
					
						
							| 
									
										
										
										
											2015-07-30 03:59:44 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	invert_key(&base_inv_old_true_key); | 
					
						
							|  |  |  | 	invert_key(&base_inv_old_false_key); | 
					
						
							|  |  |  | 	invert_key(&base_inv_true_key.key); | 
					
						
							|  |  |  | 	invert_key(&base_inv_false_key.key); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 11:42:57 +02:00
										 |  |  | static void __exit test_static_key_base_exit(void) | 
					
						
							| 
									
										
										
										
											2015-07-30 03:59:44 +00:00
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 11:42:57 +02:00
										 |  |  | module_init(test_static_key_base_init); | 
					
						
							|  |  |  | module_exit(test_static_key_base_exit); | 
					
						
							| 
									
										
										
										
											2015-07-30 03:59:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | MODULE_AUTHOR("Jason Baron <jbaron@akamai.com>"); | 
					
						
							| 
									
										
										
										
											2024-06-19 13:59:15 -07:00
										 |  |  | MODULE_DESCRIPTION("Kernel module to support testing static keys"); | 
					
						
							| 
									
										
										
										
											2015-07-30 03:59:44 +00:00
										 |  |  | MODULE_LICENSE("GPL"); |