summaryrefslogtreecommitdiffstats
path: root/kernel/gcov/fs.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/gcov/fs.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/gcov/fs.c')
-rw-r--r--kernel/gcov/fs.c24
1 files changed, 2 insertions, 22 deletions
diff --git a/kernel/gcov/fs.c b/kernel/gcov/fs.c
index 6e40ff6be083..e5eb5ea7ea59 100644
--- a/kernel/gcov/fs.c
+++ b/kernel/gcov/fs.c
@@ -64,7 +64,6 @@ struct gcov_node {
64static const char objtree[] = OBJTREE; 64static const char objtree[] = OBJTREE;
65static const char srctree[] = SRCTREE; 65static const char srctree[] = SRCTREE;
66static struct gcov_node root_node; 66static struct gcov_node root_node;
67static struct dentry *reset_dentry;
68static LIST_HEAD(all_head); 67static LIST_HEAD(all_head);
69static DEFINE_MUTEX(node_lock); 68static DEFINE_MUTEX(node_lock);
70 69
@@ -387,8 +386,6 @@ static void add_links(struct gcov_node *node, struct dentry *parent)
387 goto out_err; 386 goto out_err;
388 node->links[i] = debugfs_create_symlink(deskew(basename), 387 node->links[i] = debugfs_create_symlink(deskew(basename),
389 parent, target); 388 parent, target);
390 if (!node->links[i])
391 goto out_err;
392 kfree(target); 389 kfree(target);
393 } 390 }
394 391
@@ -450,11 +447,6 @@ static struct gcov_node *new_node(struct gcov_node *parent,
450 parent->dentry, node, &gcov_data_fops); 447 parent->dentry, node, &gcov_data_fops);
451 } else 448 } else
452 node->dentry = debugfs_create_dir(node->name, parent->dentry); 449 node->dentry = debugfs_create_dir(node->name, parent->dentry);
453 if (!node->dentry) {
454 pr_warn("could not create file\n");
455 kfree(node);
456 return NULL;
457 }
458 if (info) 450 if (info)
459 add_links(node, parent->dentry); 451 add_links(node, parent->dentry);
460 list_add(&node->list, &parent->children); 452 list_add(&node->list, &parent->children);
@@ -761,32 +753,20 @@ void gcov_event(enum gcov_action action, struct gcov_info *info)
761/* Create debugfs entries. */ 753/* Create debugfs entries. */
762static __init int gcov_fs_init(void) 754static __init int gcov_fs_init(void)
763{ 755{
764 int rc = -EIO;
765
766 init_node(&root_node, NULL, NULL, NULL); 756 init_node(&root_node, NULL, NULL, NULL);
767 /* 757 /*
768 * /sys/kernel/debug/gcov will be parent for the reset control file 758 * /sys/kernel/debug/gcov will be parent for the reset control file
769 * and all profiling files. 759 * and all profiling files.
770 */ 760 */
771 root_node.dentry = debugfs_create_dir("gcov", NULL); 761 root_node.dentry = debugfs_create_dir("gcov", NULL);
772 if (!root_node.dentry)
773 goto err_remove;
774 /* 762 /*
775 * Create reset file which resets all profiling counts when written 763 * Create reset file which resets all profiling counts when written
776 * to. 764 * to.
777 */ 765 */
778 reset_dentry = debugfs_create_file("reset", 0600, root_node.dentry, 766 debugfs_create_file("reset", 0600, root_node.dentry, NULL,
779 NULL, &gcov_reset_fops); 767 &gcov_reset_fops);
780 if (!reset_dentry)
781 goto err_remove;
782 /* Replay previous events to get our fs hierarchy up-to-date. */ 768 /* Replay previous events to get our fs hierarchy up-to-date. */
783 gcov_enable_events(); 769 gcov_enable_events();
784 return 0; 770 return 0;
785
786err_remove:
787 pr_err("init failed\n");
788 debugfs_remove(root_node.dentry);
789
790 return rc;
791} 771}
792device_initcall(gcov_fs_init); 772device_initcall(gcov_fs_init);