| .. | .. | 
|---|
| 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); | 
|---|