| .. | .. |
|---|
| 58 | 58 | struct dentry *dentry; |
|---|
| 59 | 59 | struct dentry **links; |
|---|
| 60 | 60 | int num_loaded; |
|---|
| 61 | | - char name[0]; |
|---|
| 61 | + char name[]; |
|---|
| 62 | 62 | }; |
|---|
| 63 | 63 | |
|---|
| 64 | 64 | static const char objtree[] = OBJTREE; |
|---|
| 65 | 65 | static const char srctree[] = SRCTREE; |
|---|
| 66 | 66 | static struct gcov_node root_node; |
|---|
| 67 | | -static struct dentry *reset_dentry; |
|---|
| 68 | 67 | static LIST_HEAD(all_head); |
|---|
| 69 | 68 | static DEFINE_MUTEX(node_lock); |
|---|
| 70 | 69 | |
|---|
| .. | .. |
|---|
| 387 | 386 | goto out_err; |
|---|
| 388 | 387 | node->links[i] = debugfs_create_symlink(deskew(basename), |
|---|
| 389 | 388 | parent, target); |
|---|
| 390 | | - if (!node->links[i]) |
|---|
| 391 | | - goto out_err; |
|---|
| 392 | 389 | kfree(target); |
|---|
| 393 | 390 | } |
|---|
| 394 | 391 | |
|---|
| .. | .. |
|---|
| 450 | 447 | parent->dentry, node, &gcov_data_fops); |
|---|
| 451 | 448 | } else |
|---|
| 452 | 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 | 450 | if (info) |
|---|
| 459 | 451 | add_links(node, parent->dentry); |
|---|
| 460 | 452 | list_add(&node->list, &parent->children); |
|---|
| .. | .. |
|---|
| 761 | 753 | /* Create debugfs entries. */ |
|---|
| 762 | 754 | static __init int gcov_fs_init(void) |
|---|
| 763 | 755 | { |
|---|
| 764 | | - int rc = -EIO; |
|---|
| 765 | | - |
|---|
| 766 | 756 | init_node(&root_node, NULL, NULL, NULL); |
|---|
| 767 | 757 | /* |
|---|
| 768 | 758 | * /sys/kernel/debug/gcov will be parent for the reset control file |
|---|
| 769 | 759 | * and all profiling files. |
|---|
| 770 | 760 | */ |
|---|
| 771 | 761 | root_node.dentry = debugfs_create_dir("gcov", NULL); |
|---|
| 772 | | - if (!root_node.dentry) |
|---|
| 773 | | - goto err_remove; |
|---|
| 774 | 762 | /* |
|---|
| 775 | 763 | * Create reset file which resets all profiling counts when written |
|---|
| 776 | 764 | * to. |
|---|
| 777 | 765 | */ |
|---|
| 778 | | - reset_dentry = debugfs_create_file("reset", 0600, root_node.dentry, |
|---|
| 779 | | - NULL, &gcov_reset_fops); |
|---|
| 780 | | - if (!reset_dentry) |
|---|
| 781 | | - goto err_remove; |
|---|
| 766 | + debugfs_create_file("reset", 0600, root_node.dentry, NULL, |
|---|
| 767 | + &gcov_reset_fops); |
|---|
| 782 | 768 | /* Replay previous events to get our fs hierarchy up-to-date. */ |
|---|
| 783 | 769 | gcov_enable_events(); |
|---|
| 784 | 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 | 772 | device_initcall(gcov_fs_init); |
|---|