1*2c739cedSAlbert van der Linde // SPDX-License-Identifier: GPL-2.0-only 2*2c739cedSAlbert van der Linde #include <linux/fault-inject.h> 3*2c739cedSAlbert van der Linde #include <linux/fault-inject-usercopy.h> 4*2c739cedSAlbert van der Linde 5*2c739cedSAlbert van der Linde static struct { 6*2c739cedSAlbert van der Linde struct fault_attr attr; 7*2c739cedSAlbert van der Linde } fail_usercopy = { 8*2c739cedSAlbert van der Linde .attr = FAULT_ATTR_INITIALIZER, 9*2c739cedSAlbert van der Linde }; 10*2c739cedSAlbert van der Linde setup_fail_usercopy(char * str)11*2c739cedSAlbert van der Lindestatic int __init setup_fail_usercopy(char *str) 12*2c739cedSAlbert van der Linde { 13*2c739cedSAlbert van der Linde return setup_fault_attr(&fail_usercopy.attr, str); 14*2c739cedSAlbert van der Linde } 15*2c739cedSAlbert van der Linde __setup("fail_usercopy=", setup_fail_usercopy); 16*2c739cedSAlbert van der Linde 17*2c739cedSAlbert van der Linde #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS 18*2c739cedSAlbert van der Linde fail_usercopy_debugfs(void)19*2c739cedSAlbert van der Lindestatic int __init fail_usercopy_debugfs(void) 20*2c739cedSAlbert van der Linde { 21*2c739cedSAlbert van der Linde struct dentry *dir; 22*2c739cedSAlbert van der Linde 23*2c739cedSAlbert van der Linde dir = fault_create_debugfs_attr("fail_usercopy", NULL, 24*2c739cedSAlbert van der Linde &fail_usercopy.attr); 25*2c739cedSAlbert van der Linde if (IS_ERR(dir)) 26*2c739cedSAlbert van der Linde return PTR_ERR(dir); 27*2c739cedSAlbert van der Linde 28*2c739cedSAlbert van der Linde return 0; 29*2c739cedSAlbert van der Linde } 30*2c739cedSAlbert van der Linde 31*2c739cedSAlbert van der Linde late_initcall(fail_usercopy_debugfs); 32*2c739cedSAlbert van der Linde 33*2c739cedSAlbert van der Linde #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */ 34*2c739cedSAlbert van der Linde should_fail_usercopy(void)35*2c739cedSAlbert van der Lindebool should_fail_usercopy(void) 36*2c739cedSAlbert van der Linde { 37*2c739cedSAlbert van der Linde return should_fail(&fail_usercopy.attr, 1); 38*2c739cedSAlbert van der Linde } 39*2c739cedSAlbert van der Linde EXPORT_SYMBOL_GPL(should_fail_usercopy); 40