summaryrefslogtreecommitdiffstats
path: root/kernel/fail_function.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-07-12 15:24:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-07-12 15:24:03 -0400
commitf632a8170a6b667ee4e3f552087588f0fe13c4bb (patch)
tree9fbdd3505f1471364265727dea1bc9d034cbed8f /kernel/fail_function.c
parentef8f3d48afd6a17a0dae8c277c2f539c2f19fd16 (diff)
parentc33d442328f556460b79aba6058adb37bb555389 (diff)
Merge tag 'driver-core-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core and debugfs updates from Greg KH: "Here is the "big" driver core and debugfs changes for 5.3-rc1 It's a lot of different patches, all across the tree due to some api changes and lots of debugfs cleanups. Other than the debugfs cleanups, in this set of changes we have: - bus iteration function cleanups - scripts/get_abi.pl tool to display and parse Documentation/ABI entries in a simple way - cleanups to Documenatation/ABI/ entries to make them parse easier due to typos and other minor things - default_attrs use for some ktype users - driver model documentation file conversions to .rst - compressed firmware file loading - deferred probe fixes All of these have been in linux-next for a while, with a bunch of merge issues that Stephen has been patient with me for" * tag 'driver-core-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (102 commits) debugfs: make error message a bit more verbose orangefs: fix build warning from debugfs cleanup patch ubifs: fix build warning after debugfs cleanup patch driver: core: Allow subsystems to continue deferring probe drivers: base: cacheinfo: Ensure cpu hotplug work is done before Intel RDT arch_topology: Remove error messages on out-of-memory conditions lib: notifier-error-inject: no need to check return value of debugfs_create functions swiotlb: no need to check return value of debugfs_create functions ceph: no need to check return value of debugfs_create functions sunrpc: no need to check return value of debugfs_create functions ubifs: no need to check return value of debugfs_create functions orangefs: no need to check return value of debugfs_create functions nfsd: no need to check return value of debugfs_create functions lib: 842: no need to check return value of debugfs_create functions debugfs: provide pr_fmt() macro debugfs: log errors when something goes wrong drivers: s390/cio: Fix compilation warning about const qualifiers drivers: Add generic helper to match by of_node driver_find_device: Unify the match function with class_find_device() bus_find_device: Unify the match callback with class_find_device ...
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);