netdevsim: remove dir in nsim_dev_debugfs_init() when creating ports dir failed
authorZhengchao Shao <shaozhengchao@huawei.com>
Wed, 26 Oct 2022 01:46:42 +0000 (09:46 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 27 Oct 2022 17:47:29 +0000 (10:47 -0700)
Remove dir in nsim_dev_debugfs_init() when creating ports dir failed.
Otherwise, the netdevsim device will not be created next time. Kernel
reports an error: debugfs: Directory 'netdevsim1' with parent 'netdevsim'
already present!

Fixes: ab1d0cc004d7 ("netdevsim: change debugfs tree topology")
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/netdevsim/dev.c

index 81c3e14..a7880c7 100644 (file)
@@ -309,8 +309,10 @@ static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev)
        if (IS_ERR(nsim_dev->ddir))
                return PTR_ERR(nsim_dev->ddir);
        nsim_dev->ports_ddir = debugfs_create_dir("ports", nsim_dev->ddir);
-       if (IS_ERR(nsim_dev->ports_ddir))
-               return PTR_ERR(nsim_dev->ports_ddir);
+       if (IS_ERR(nsim_dev->ports_ddir)) {
+               err = PTR_ERR(nsim_dev->ports_ddir);
+               goto err_ddir;
+       }
        debugfs_create_bool("fw_update_status", 0600, nsim_dev->ddir,
                            &nsim_dev->fw_update_status);
        debugfs_create_u32("fw_update_overwrite_mask", 0600, nsim_dev->ddir,
@@ -346,7 +348,7 @@ static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev)
        nsim_dev->nodes_ddir = debugfs_create_dir("rate_nodes", nsim_dev->ddir);
        if (IS_ERR(nsim_dev->nodes_ddir)) {
                err = PTR_ERR(nsim_dev->nodes_ddir);
-               goto err_out;
+               goto err_ports_ddir;
        }
        debugfs_create_bool("fail_trap_drop_counter_get", 0600,
                            nsim_dev->ddir,
@@ -354,8 +356,9 @@ static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev)
        nsim_udp_tunnels_debugfs_create(nsim_dev);
        return 0;
 
-err_out:
+err_ports_ddir:
        debugfs_remove_recursive(nsim_dev->ports_ddir);
+err_ddir:
        debugfs_remove_recursive(nsim_dev->ddir);
        return err;
 }