diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-12 15:24:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-12 15:24:03 -0400 |
commit | f632a8170a6b667ee4e3f552087588f0fe13c4bb (patch) | |
tree | 9fbdd3505f1471364265727dea1bc9d034cbed8f /kernel/fail_function.c | |
parent | ef8f3d48afd6a17a0dae8c277c2f539c2f19fd16 (diff) | |
parent | c33d442328f556460b79aba6058adb37bb555389 (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.c | 23 |
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) | |||
152 | DEFINE_DEBUGFS_ATTRIBUTE(fei_retval_ops, fei_retval_get, fei_retval_set, | 152 | DEFINE_DEBUGFS_ATTRIBUTE(fei_retval_ops, fei_retval_get, fei_retval_set, |
153 | "%llx\n"); | 153 | "%llx\n"); |
154 | 154 | ||
155 | static int fei_debugfs_add_attr(struct fei_attr *attr) | 155 | static 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 | ||
171 | static void fei_debugfs_remove_attr(struct fei_attr *attr) | 164 | static 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; |
350 | error: | ||
351 | debugfs_remove_recursive(dir); | ||
352 | return -ENOMEM; | ||
353 | } | 340 | } |
354 | 341 | ||
355 | late_initcall(fei_debugfs_init); | 342 | late_initcall(fei_debugfs_init); |