diff options
Diffstat (limited to 'kernel/gcov/fs.c')
-rw-r--r-- | kernel/gcov/fs.c | 24 |
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 { | |||
64 | static const char objtree[] = OBJTREE; | 64 | static const char objtree[] = OBJTREE; |
65 | static const char srctree[] = SRCTREE; | 65 | static const char srctree[] = SRCTREE; |
66 | static struct gcov_node root_node; | 66 | static struct gcov_node root_node; |
67 | static struct dentry *reset_dentry; | ||
68 | static LIST_HEAD(all_head); | 67 | static LIST_HEAD(all_head); |
69 | static DEFINE_MUTEX(node_lock); | 68 | static 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. */ |
762 | static __init int gcov_fs_init(void) | 754 | static __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 | |||
786 | err_remove: | ||
787 | pr_err("init failed\n"); | ||
788 | debugfs_remove(root_node.dentry); | ||
789 | |||
790 | return rc; | ||
791 | } | 771 | } |
792 | device_initcall(gcov_fs_init); | 772 | device_initcall(gcov_fs_init); |