Blame SOURCES/0018-netdrv-mlx5-no-need-to-check-return-value-of-debugfs.patch

d8f823
From fffd2ca5a253c4a49aa53caa87e833bd0d56e78a Mon Sep 17 00:00:00 2001
d8f823
From: Alaa Hleihel <ahleihel@redhat.com>
d8f823
Date: Sun, 10 May 2020 14:51:39 -0400
d8f823
Subject: [PATCH 018/312] [netdrv] mlx5: no need to check return value of
d8f823
 debugfs_create functions
d8f823
d8f823
Message-id: <20200510145245.10054-17-ahleihel@redhat.com>
d8f823
Patchwork-id: 306556
d8f823
Patchwork-instance: patchwork
d8f823
O-Subject: [RHEL8.3 BZ 1789378 v2 16/82] mlx5: no need to check return value of debugfs_create functions
d8f823
Bugzilla: 1789378
d8f823
RH-Acked-by: Kamal Heib <kheib@redhat.com>
d8f823
RH-Acked-by: Jarod Wilson <jarod@redhat.com>
d8f823
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
d8f823
RH-Acked-by: Jonathan Toppins <jtoppins@redhat.com>
d8f823
d8f823
Bugzilla: http://bugzilla.redhat.com/1789378
d8f823
Upstream: v5.4-rc1
d8f823
d8f823
commit 9f818c8a7388ad1a5c60ace50be6f658c058a5f2
d8f823
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
d8f823
Date:   Sat Aug 10 12:17:18 2019 +0200
d8f823
d8f823
    mlx5: no need to check return value of debugfs_create functions
d8f823
d8f823
    When calling debugfs functions, there is no need to ever check the
d8f823
    return value.  The function can work or not, but the code logic should
d8f823
    never do something different based on this.
d8f823
d8f823
    This cleans up a lot of unneeded code and logic around the debugfs
d8f823
    files, making all of this much simpler and easier to understand as we
d8f823
    don't need to keep the dentries saved anymore.
d8f823
d8f823
    Cc: Saeed Mahameed <saeedm@mellanox.com>
d8f823
    Cc: Leon Romanovsky <leon@kernel.org>
d8f823
    Cc: netdev@vger.kernel.org
d8f823
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
d8f823
    Signed-off-by: David S. Miller <davem@davemloft.net>
d8f823
d8f823
Signed-off-by: Alaa Hleihel <ahleihel@redhat.com>
d8f823
Signed-off-by: Frantisek Hrbata <fhrbata@redhat.com>
d8f823
---
d8f823
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c      |  51 ++---------
d8f823
 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c  | 102 ++-------------------
d8f823
 drivers/net/ethernet/mellanox/mlx5/core/eq.c       |  11 +--
d8f823
 drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h   |   2 +-
d8f823
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |   7 +-
d8f823
 .../net/ethernet/mellanox/mlx5/core/mlx5_core.h    |   2 +-
d8f823
 include/linux/mlx5/driver.h                        |   4 +-
d8f823
 7 files changed, 24 insertions(+), 155 deletions(-)
d8f823
d8f823
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
d8f823
index 8da5a1cd87af..4b7ca04ae25e 100644
d8f823
--- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
d8f823
+++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
d8f823
@@ -1368,49 +1368,19 @@ static void clean_debug_files(struct mlx5_core_dev *dev)
d8f823
 	debugfs_remove_recursive(dbg->dbg_root);
d8f823
 }
d8f823
 
d8f823
-static int create_debugfs_files(struct mlx5_core_dev *dev)
d8f823
+static void create_debugfs_files(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
 	struct mlx5_cmd_debug *dbg = &dev->cmd.dbg;
d8f823
-	int err = -ENOMEM;
d8f823
-
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return 0;
d8f823
 
d8f823
 	dbg->dbg_root = debugfs_create_dir("cmd", dev->priv.dbg_root);
d8f823
-	if (!dbg->dbg_root)
d8f823
-		return err;
d8f823
-
d8f823
-	dbg->dbg_in = debugfs_create_file("in", 0400, dbg->dbg_root,
d8f823
-					  dev, &dfops);
d8f823
-	if (!dbg->dbg_in)
d8f823
-		goto err_dbg;
d8f823
 
d8f823
-	dbg->dbg_out = debugfs_create_file("out", 0200, dbg->dbg_root,
d8f823
-					   dev, &dfops);
d8f823
-	if (!dbg->dbg_out)
d8f823
-		goto err_dbg;
d8f823
-
d8f823
-	dbg->dbg_outlen = debugfs_create_file("out_len", 0600, dbg->dbg_root,
d8f823
-					      dev, &olfops);
d8f823
-	if (!dbg->dbg_outlen)
d8f823
-		goto err_dbg;
d8f823
-
d8f823
-	dbg->dbg_status = debugfs_create_u8("status", 0600, dbg->dbg_root,
d8f823
-					    &dbg->status);
d8f823
-	if (!dbg->dbg_status)
d8f823
-		goto err_dbg;
d8f823
-
d8f823
-	dbg->dbg_run = debugfs_create_file("run", 0200, dbg->dbg_root, dev, &fops;;
d8f823
-	if (!dbg->dbg_run)
d8f823
-		goto err_dbg;
d8f823
+	debugfs_create_file("in", 0400, dbg->dbg_root, dev, &dfops);
d8f823
+	debugfs_create_file("out", 0200, dbg->dbg_root, dev, &dfops);
d8f823
+	debugfs_create_file("out_len", 0600, dbg->dbg_root, dev, &olfops);
d8f823
+	debugfs_create_u8("status", 0600, dbg->dbg_root, &dbg->status);
d8f823
+	debugfs_create_file("run", 0200, dbg->dbg_root, dev, &fops;;
d8f823
 
d8f823
 	mlx5_cmdif_debugfs_init(dev);
d8f823
-
d8f823
-	return 0;
d8f823
-
d8f823
-err_dbg:
d8f823
-	clean_debug_files(dev);
d8f823
-	return err;
d8f823
 }
d8f823
 
d8f823
 static void mlx5_cmd_change_mod(struct mlx5_core_dev *dev, int mode)
d8f823
@@ -2007,17 +1977,10 @@ int mlx5_cmd_init(struct mlx5_core_dev *dev)
d8f823
 		goto err_cache;
d8f823
 	}
d8f823
 
d8f823
-	err = create_debugfs_files(dev);
d8f823
-	if (err) {
d8f823
-		err = -ENOMEM;
d8f823
-		goto err_wq;
d8f823
-	}
d8f823
+	create_debugfs_files(dev);
d8f823
 
d8f823
 	return 0;
d8f823
 
d8f823
-err_wq:
d8f823
-	destroy_workqueue(cmd->wq);
d8f823
-
d8f823
 err_cache:
d8f823
 	destroy_msg_cache(dev);
d8f823
 
d8f823
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c b/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
d8f823
index a11e22d0b0cc..04854e5fbcd7 100644
d8f823
--- a/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
d8f823
+++ b/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
d8f823
@@ -92,8 +92,6 @@ EXPORT_SYMBOL(mlx5_debugfs_root);
d8f823
 void mlx5_register_debugfs(void)
d8f823
 {
d8f823
 	mlx5_debugfs_root = debugfs_create_dir("mlx5", NULL);
d8f823
-	if (IS_ERR_OR_NULL(mlx5_debugfs_root))
d8f823
-		mlx5_debugfs_root = NULL;
d8f823
 }
d8f823
 
d8f823
 void mlx5_unregister_debugfs(void)
d8f823
@@ -101,45 +99,25 @@ void mlx5_unregister_debugfs(void)
d8f823
 	debugfs_remove(mlx5_debugfs_root);
d8f823
 }
d8f823
 
d8f823
-int mlx5_qp_debugfs_init(struct mlx5_core_dev *dev)
d8f823
+void mlx5_qp_debugfs_init(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return 0;
d8f823
-
d8f823
 	atomic_set(&dev->num_qps, 0);
d8f823
 
d8f823
 	dev->priv.qp_debugfs = debugfs_create_dir("QPs",  dev->priv.dbg_root);
d8f823
-	if (!dev->priv.qp_debugfs)
d8f823
-		return -ENOMEM;
d8f823
-
d8f823
-	return 0;
d8f823
 }
d8f823
 
d8f823
 void mlx5_qp_debugfs_cleanup(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return;
d8f823
-
d8f823
 	debugfs_remove_recursive(dev->priv.qp_debugfs);
d8f823
 }
d8f823
 
d8f823
-int mlx5_eq_debugfs_init(struct mlx5_core_dev *dev)
d8f823
+void mlx5_eq_debugfs_init(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return 0;
d8f823
-
d8f823
 	dev->priv.eq_debugfs = debugfs_create_dir("EQs",  dev->priv.dbg_root);
d8f823
-	if (!dev->priv.eq_debugfs)
d8f823
-		return -ENOMEM;
d8f823
-
d8f823
-	return 0;
d8f823
 }
d8f823
 
d8f823
 void mlx5_eq_debugfs_cleanup(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return;
d8f823
-
d8f823
 	debugfs_remove_recursive(dev->priv.eq_debugfs);
d8f823
 }
d8f823
 
d8f823
@@ -183,85 +161,41 @@ static const struct file_operations stats_fops = {
d8f823
 	.write	= average_write,
d8f823
 };
d8f823
 
d8f823
-int mlx5_cmdif_debugfs_init(struct mlx5_core_dev *dev)
d8f823
+void mlx5_cmdif_debugfs_init(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
 	struct mlx5_cmd_stats *stats;
d8f823
 	struct dentry **cmd;
d8f823
 	const char *namep;
d8f823
-	int err;
d8f823
 	int i;
d8f823
 
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return 0;
d8f823
-
d8f823
 	cmd = &dev->priv.cmdif_debugfs;
d8f823
 	*cmd = debugfs_create_dir("commands", dev->priv.dbg_root);
d8f823
-	if (!*cmd)
d8f823
-		return -ENOMEM;
d8f823
 
d8f823
 	for (i = 0; i < ARRAY_SIZE(dev->cmd.stats); i++) {
d8f823
 		stats = &dev->cmd.stats[i];
d8f823
 		namep = mlx5_command_str(i);
d8f823
 		if (strcmp(namep, "unknown command opcode")) {
d8f823
 			stats->root = debugfs_create_dir(namep, *cmd);
d8f823
-			if (!stats->root) {
d8f823
-				mlx5_core_warn(dev, "failed adding command %d\n",
d8f823
-					       i);
d8f823
-				err = -ENOMEM;
d8f823
-				goto out;
d8f823
-			}
d8f823
-
d8f823
-			stats->avg = debugfs_create_file("average", 0400,
d8f823
-							 stats->root, stats,
d8f823
-							 &stats_fops);
d8f823
-			if (!stats->avg) {
d8f823
-				mlx5_core_warn(dev, "failed creating debugfs file\n");
d8f823
-				err = -ENOMEM;
d8f823
-				goto out;
d8f823
-			}
d8f823
-
d8f823
-			stats->count = debugfs_create_u64("n", 0400,
d8f823
-							  stats->root,
d8f823
-							  &stats->n);
d8f823
-			if (!stats->count) {
d8f823
-				mlx5_core_warn(dev, "failed creating debugfs file\n");
d8f823
-				err = -ENOMEM;
d8f823
-				goto out;
d8f823
-			}
d8f823
+
d8f823
+			debugfs_create_file("average", 0400, stats->root, stats,
d8f823
+					    &stats_fops);
d8f823
+			debugfs_create_u64("n", 0400, stats->root, &stats->n);
d8f823
 		}
d8f823
 	}
d8f823
-
d8f823
-	return 0;
d8f823
-out:
d8f823
-	debugfs_remove_recursive(dev->priv.cmdif_debugfs);
d8f823
-	return err;
d8f823
 }
d8f823
 
d8f823
 void mlx5_cmdif_debugfs_cleanup(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return;
d8f823
-
d8f823
 	debugfs_remove_recursive(dev->priv.cmdif_debugfs);
d8f823
 }
d8f823
 
d8f823
-int mlx5_cq_debugfs_init(struct mlx5_core_dev *dev)
d8f823
+void mlx5_cq_debugfs_init(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return 0;
d8f823
-
d8f823
 	dev->priv.cq_debugfs = debugfs_create_dir("CQs",  dev->priv.dbg_root);
d8f823
-	if (!dev->priv.cq_debugfs)
d8f823
-		return -ENOMEM;
d8f823
-
d8f823
-	return 0;
d8f823
 }
d8f823
 
d8f823
 void mlx5_cq_debugfs_cleanup(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
-	if (!mlx5_debugfs_root)
d8f823
-		return;
d8f823
-
d8f823
 	debugfs_remove_recursive(dev->priv.cq_debugfs);
d8f823
 }
d8f823
 
d8f823
@@ -484,7 +418,6 @@ static int add_res_tree(struct mlx5_core_dev *dev, enum dbg_rsc_type type,
d8f823
 {
d8f823
 	struct mlx5_rsc_debug *d;
d8f823
 	char resn[32];
d8f823
-	int err;
d8f823
 	int i;
d8f823
 
d8f823
 	d = kzalloc(struct_size(d, fields, nfile), GFP_KERNEL);
d8f823
@@ -496,30 +429,15 @@ static int add_res_tree(struct mlx5_core_dev *dev, enum dbg_rsc_type type,
d8f823
 	d->type = type;
d8f823
 	sprintf(resn, "0x%x", rsn);
d8f823
 	d->root = debugfs_create_dir(resn,  root);
d8f823
-	if (!d->root) {
d8f823
-		err = -ENOMEM;
d8f823
-		goto out_free;
d8f823
-	}
d8f823
 
d8f823
 	for (i = 0; i < nfile; i++) {
d8f823
 		d->fields[i].i = i;
d8f823
-		d->fields[i].dent = debugfs_create_file(field[i], 0400,
d8f823
-							d->root, &d->fields[i],
d8f823
-							&fops;;
d8f823
-		if (!d->fields[i].dent) {
d8f823
-			err = -ENOMEM;
d8f823
-			goto out_rem;
d8f823
-		}
d8f823
+		debugfs_create_file(field[i], 0400, d->root, &d->fields[i],
d8f823
+				    &fops;;
d8f823
 	}
d8f823
 	*dbg = d;
d8f823
 
d8f823
 	return 0;
d8f823
-out_rem:
d8f823
-	debugfs_remove_recursive(d->root);
d8f823
-
d8f823
-out_free:
d8f823
-	kfree(d);
d8f823
-	return err;
d8f823
 }
d8f823
 
d8f823
 static void rem_res_tree(struct mlx5_rsc_debug *d)
d8f823
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eq.c b/drivers/net/ethernet/mellanox/mlx5/core/eq.c
d8f823
index 2df9aaa421c6..09d4c64b6e73 100644
d8f823
--- a/drivers/net/ethernet/mellanox/mlx5/core/eq.c
d8f823
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eq.c
d8f823
@@ -411,7 +411,7 @@ void mlx5_eq_del_cq(struct mlx5_eq *eq, struct mlx5_core_cq *cq)
d8f823
 int mlx5_eq_table_init(struct mlx5_core_dev *dev)
d8f823
 {
d8f823
 	struct mlx5_eq_table *eq_table;
d8f823
-	int i, err;
d8f823
+	int i;
d8f823
 
d8f823
 	eq_table = kvzalloc(sizeof(*eq_table), GFP_KERNEL);
d8f823
 	if (!eq_table)
d8f823
@@ -419,9 +419,7 @@ int mlx5_eq_table_init(struct mlx5_core_dev *dev)
d8f823
 
d8f823
 	dev->priv.eq_table = eq_table;
d8f823
 
d8f823
-	err = mlx5_eq_debugfs_init(dev);
d8f823
-	if (err)
d8f823
-		goto kvfree_eq_table;
d8f823
+	mlx5_eq_debugfs_init(dev);
d8f823
 
d8f823
 	mutex_init(&eq_table->lock);
d8f823
 	for (i = 0; i < MLX5_EVENT_TYPE_MAX; i++)
d8f823
@@ -429,11 +427,6 @@ int mlx5_eq_table_init(struct mlx5_core_dev *dev)
d8f823
 
d8f823
 	eq_table->irq_table = dev->priv.irq_table;
d8f823
 	return 0;
d8f823
-
d8f823
-kvfree_eq_table:
d8f823
-	kvfree(eq_table);
d8f823
-	dev->priv.eq_table = NULL;
d8f823
-	return err;
d8f823
 }
d8f823
 
d8f823
 void mlx5_eq_table_cleanup(struct mlx5_core_dev *dev)
d8f823
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h b/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h
d8f823
index 3dfab91ae5f2..4be4d2d36218 100644
d8f823
--- a/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h
d8f823
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h
d8f823
@@ -87,7 +87,7 @@ void mlx5_eq_synchronize_cmd_irq(struct mlx5_core_dev *dev);
d8f823
 
d8f823
 int mlx5_debug_eq_add(struct mlx5_core_dev *dev, struct mlx5_eq *eq);
d8f823
 void mlx5_debug_eq_remove(struct mlx5_core_dev *dev, struct mlx5_eq *eq);
d8f823
-int mlx5_eq_debugfs_init(struct mlx5_core_dev *dev);
d8f823
+void mlx5_eq_debugfs_init(struct mlx5_core_dev *dev);
d8f823
 void mlx5_eq_debugfs_cleanup(struct mlx5_core_dev *dev);
d8f823
 
d8f823
 /* This function should only be called after mlx5_cmd_force_teardown_hca */
d8f823
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
d8f823
index a5bae398a9e7..568d973725b6 100644
d8f823
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
d8f823
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
d8f823
@@ -855,11 +855,7 @@ static int mlx5_init_once(struct mlx5_core_dev *dev)
d8f823
 		goto err_eq_cleanup;
d8f823
 	}
d8f823
 
d8f823
-	err = mlx5_cq_debugfs_init(dev);
d8f823
-	if (err) {
d8f823
-		mlx5_core_err(dev, "failed to initialize cq debugfs\n");
d8f823
-		goto err_events_cleanup;
d8f823
-	}
d8f823
+	mlx5_cq_debugfs_init(dev);
d8f823
 
d8f823
 	mlx5_init_qp_table(dev);
d8f823
 
d8f823
@@ -924,7 +920,6 @@ static int mlx5_init_once(struct mlx5_core_dev *dev)
d8f823
 	mlx5_cleanup_mkey_table(dev);
d8f823
 	mlx5_cleanup_qp_table(dev);
d8f823
 	mlx5_cq_debugfs_cleanup(dev);
d8f823
-err_events_cleanup:
d8f823
 	mlx5_events_cleanup(dev);
d8f823
 err_eq_cleanup:
d8f823
 	mlx5_eq_table_cleanup(dev);
d8f823
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
d8f823
index bbcf4ee40ad5..b100489dc85c 100644
d8f823
--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
d8f823
+++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
d8f823
@@ -146,7 +146,7 @@ u64 mlx5_read_internal_timer(struct mlx5_core_dev *dev,
d8f823
 
d8f823
 void mlx5_cmd_trigger_completions(struct mlx5_core_dev *dev);
d8f823
 void mlx5_cmd_flush(struct mlx5_core_dev *dev);
d8f823
-int mlx5_cq_debugfs_init(struct mlx5_core_dev *dev);
d8f823
+void mlx5_cq_debugfs_init(struct mlx5_core_dev *dev);
d8f823
 void mlx5_cq_debugfs_cleanup(struct mlx5_core_dev *dev);
d8f823
 
d8f823
 int mlx5_query_pcam_reg(struct mlx5_core_dev *dev, u32 *pcam, u8 feature_group,
d8f823
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
d8f823
index 2b8b0ef2e425..904d864f7259 100644
d8f823
--- a/include/linux/mlx5/driver.h
d8f823
+++ b/include/linux/mlx5/driver.h
d8f823
@@ -982,7 +982,7 @@ int mlx5_vector2eqn(struct mlx5_core_dev *dev, int vector, int *eqn,
d8f823
 int mlx5_core_attach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn);
d8f823
 int mlx5_core_detach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn);
d8f823
 
d8f823
-int mlx5_qp_debugfs_init(struct mlx5_core_dev *dev);
d8f823
+void mlx5_qp_debugfs_init(struct mlx5_core_dev *dev);
d8f823
 void mlx5_qp_debugfs_cleanup(struct mlx5_core_dev *dev);
d8f823
 int mlx5_core_access_reg(struct mlx5_core_dev *dev, void *data_in,
d8f823
 			 int size_in, void *data_out, int size_out,
d8f823
@@ -994,7 +994,7 @@ int mlx5_db_alloc_node(struct mlx5_core_dev *dev, struct mlx5_db *db,
d8f823
 void mlx5_db_free(struct mlx5_core_dev *dev, struct mlx5_db *db);
d8f823
 
d8f823
 const char *mlx5_command_str(int command);
d8f823
-int mlx5_cmdif_debugfs_init(struct mlx5_core_dev *dev);
d8f823
+void mlx5_cmdif_debugfs_init(struct mlx5_core_dev *dev);
d8f823
 void mlx5_cmdif_debugfs_cleanup(struct mlx5_core_dev *dev);
d8f823
 int mlx5_core_create_psv(struct mlx5_core_dev *dev, u32 pdn,
d8f823
 			 int npsvs, u32 *sig_index);
d8f823
-- 
d8f823
2.13.6
d8f823