summaryrefslogtreecommitdiffstats
path: root/kernel/fail_function.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/fail_function.c')
-rw-r--r--kernel/fail_function.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/kernel/fail_function.c b/kernel/fail_function.c
index feb80712b913..63b349168da7 100644
--- a/kernel/fail_function.c
+++ b/kernel/fail_function.c
@@ -152,20 +152,13 @@ static int fei_retval_get(void *data, u64 *val)
152DEFINE_DEBUGFS_ATTRIBUTE(fei_retval_ops, fei_retval_get, fei_retval_set, 152DEFINE_DEBUGFS_ATTRIBUTE(fei_retval_ops, fei_retval_get, fei_retval_set,
153 "%llx\n"); 153 "%llx\n");
154 154
155static int fei_debugfs_add_attr(struct fei_attr *attr) 155static void fei_debugfs_add_attr(struct fei_attr *attr)
156{ 156{
157 struct dentry *dir; 157 struct dentry *dir;
158 158
159 dir = debugfs_create_dir(attr->kp.symbol_name, fei_debugfs_dir); 159 dir = debugfs_create_dir(attr->kp.symbol_name, fei_debugfs_dir);
160 if (!dir)
161 return -ENOMEM;
162
163 if (!debugfs_create_file("retval", 0600, dir, attr, &fei_retval_ops)) {
164 debugfs_remove_recursive(dir);
165 return -ENOMEM;
166 }
167 160
168 return 0; 161 debugfs_create_file("retval", 0600, dir, attr, &fei_retval_ops);
169} 162}
170 163
171static void fei_debugfs_remove_attr(struct fei_attr *attr) 164static void fei_debugfs_remove_attr(struct fei_attr *attr)
@@ -306,7 +299,7 @@ static ssize_t fei_write(struct file *file, const char __user *buffer,
306 299
307 ret = register_kprobe(&attr->kp); 300 ret = register_kprobe(&attr->kp);
308 if (!ret) 301 if (!ret)
309 ret = fei_debugfs_add_attr(attr); 302 fei_debugfs_add_attr(attr);
310 if (ret < 0) 303 if (ret < 0)
311 fei_attr_remove(attr); 304 fei_attr_remove(attr);
312 else { 305 else {
@@ -337,19 +330,13 @@ static int __init fei_debugfs_init(void)
337 return PTR_ERR(dir); 330 return PTR_ERR(dir);
338 331
339 /* injectable attribute is just a symlink of error_inject/list */ 332 /* injectable attribute is just a symlink of error_inject/list */
340 if (!debugfs_create_symlink("injectable", dir, 333 debugfs_create_symlink("injectable", dir, "../error_injection/list");
341 "../error_injection/list"))
342 goto error;
343 334
344 if (!debugfs_create_file("inject", 0600, dir, NULL, &fei_ops)) 335 debugfs_create_file("inject", 0600, dir, NULL, &fei_ops);
345 goto error;
346 336
347 fei_debugfs_dir = dir; 337 fei_debugfs_dir = dir;
348 338
349 return 0; 339 return 0;
350error:
351 debugfs_remove_recursive(dir);
352 return -ENOMEM;
353} 340}
354 341
355late_initcall(fei_debugfs_init); 342late_initcall(fei_debugfs_init);