diff options
author | Gary R Hook <gary.hook@amd.com> | 2017-05-15 11:33:27 -0400 |
---|---|---|
committer | Jon Mason <jdmason@kudzu.us> | 2017-07-06 11:30:08 -0400 |
commit | 32e0f5bfa5aa2a74264160e0990df3af125ca6e2 (patch) | |
tree | 94bbf1cfd38e879fc45fbcadac3f637164804492 | |
parent | 8407dd6c16c0d92432323c0ce8daecd13e424703 (diff) |
ntb: Add error path/handling to Debug FS entry creation
If a failure occurs when creating Debug FS entries, unroll all of
the work that's been done.
Signed-off-by: Gary R Hook <gary.hook@amd.com>
Acked-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
-rw-r--r-- | drivers/ntb/test/ntb_perf.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c index 6fdddf86269e..759f772fa00c 100644 --- a/drivers/ntb/test/ntb_perf.c +++ b/drivers/ntb/test/ntb_perf.c | |||
@@ -745,6 +745,7 @@ static int perf_debugfs_setup(struct perf_ctx *perf) | |||
745 | if (!debugfs_initialized()) | 745 | if (!debugfs_initialized()) |
746 | return -ENODEV; | 746 | return -ENODEV; |
747 | 747 | ||
748 | /* Assumpion: only one NTB device in the system */ | ||
748 | if (!perf_debugfs_dir) { | 749 | if (!perf_debugfs_dir) { |
749 | perf_debugfs_dir = debugfs_create_dir(KBUILD_MODNAME, NULL); | 750 | perf_debugfs_dir = debugfs_create_dir(KBUILD_MODNAME, NULL); |
750 | if (!perf_debugfs_dir) | 751 | if (!perf_debugfs_dir) |
@@ -754,45 +755,50 @@ static int perf_debugfs_setup(struct perf_ctx *perf) | |||
754 | debugfs_node_dir = debugfs_create_dir(pci_name(pdev), | 755 | debugfs_node_dir = debugfs_create_dir(pci_name(pdev), |
755 | perf_debugfs_dir); | 756 | perf_debugfs_dir); |
756 | if (!debugfs_node_dir) | 757 | if (!debugfs_node_dir) |
757 | return -ENODEV; | 758 | goto err; |
758 | 759 | ||
759 | debugfs_run = debugfs_create_file("run", S_IRUSR | S_IWUSR, | 760 | debugfs_run = debugfs_create_file("run", S_IRUSR | S_IWUSR, |
760 | debugfs_node_dir, perf, | 761 | debugfs_node_dir, perf, |
761 | &ntb_perf_debugfs_run); | 762 | &ntb_perf_debugfs_run); |
762 | if (!debugfs_run) | 763 | if (!debugfs_run) |
763 | return -ENODEV; | 764 | goto err; |
764 | 765 | ||
765 | debugfs_threads = debugfs_create_u8("threads", S_IRUSR | S_IWUSR, | 766 | debugfs_threads = debugfs_create_u8("threads", S_IRUSR | S_IWUSR, |
766 | debugfs_node_dir, | 767 | debugfs_node_dir, |
767 | &perf->perf_threads); | 768 | &perf->perf_threads); |
768 | if (!debugfs_threads) | 769 | if (!debugfs_threads) |
769 | return -ENODEV; | 770 | goto err; |
770 | 771 | ||
771 | debugfs_seg_order = debugfs_create_u32("seg_order", 0600, | 772 | debugfs_seg_order = debugfs_create_u32("seg_order", 0600, |
772 | debugfs_node_dir, | 773 | debugfs_node_dir, |
773 | &seg_order); | 774 | &seg_order); |
774 | if (!debugfs_seg_order) | 775 | if (!debugfs_seg_order) |
775 | return -ENODEV; | 776 | goto err; |
776 | 777 | ||
777 | debugfs_run_order = debugfs_create_u32("run_order", 0600, | 778 | debugfs_run_order = debugfs_create_u32("run_order", 0600, |
778 | debugfs_node_dir, | 779 | debugfs_node_dir, |
779 | &run_order); | 780 | &run_order); |
780 | if (!debugfs_run_order) | 781 | if (!debugfs_run_order) |
781 | return -ENODEV; | 782 | goto err; |
782 | 783 | ||
783 | debugfs_use_dma = debugfs_create_bool("use_dma", 0600, | 784 | debugfs_use_dma = debugfs_create_bool("use_dma", 0600, |
784 | debugfs_node_dir, | 785 | debugfs_node_dir, |
785 | &use_dma); | 786 | &use_dma); |
786 | if (!debugfs_use_dma) | 787 | if (!debugfs_use_dma) |
787 | return -ENODEV; | 788 | goto err; |
788 | 789 | ||
789 | debugfs_on_node = debugfs_create_bool("on_node", 0600, | 790 | debugfs_on_node = debugfs_create_bool("on_node", 0600, |
790 | debugfs_node_dir, | 791 | debugfs_node_dir, |
791 | &on_node); | 792 | &on_node); |
792 | if (!debugfs_on_node) | 793 | if (!debugfs_on_node) |
793 | return -ENODEV; | 794 | goto err; |
794 | 795 | ||
795 | return 0; | 796 | return 0; |
797 | |||
798 | err: | ||
799 | debugfs_remove_recursive(perf_debugfs_dir); | ||
800 | perf_debugfs_dir = NULL; | ||
801 | return -ENODEV; | ||
796 | } | 802 | } |
797 | 803 | ||
798 | static int perf_probe(struct ntb_client *client, struct ntb_dev *ntb) | 804 | static int perf_probe(struct ntb_client *client, struct ntb_dev *ntb) |