wimax: no need to check return value of debugfs_create functions

When calling debugfs functions, there is no need to ever check the
return value.  The function can work or not, but the code logic should
never do something different based on this.

This cleans up a lot of unneeded code and logic around the debugfs wimax
files, making all of this much simpler and easier to understand.

Cc: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Cc: linux-wimax@intel.com
Cc: netdev@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Greg Kroah-Hartman 2019-08-10 12:17:16 +02:00 committed by David S. Miller
parent 38b9e0f6d9
commit a62052ba2a
8 changed files with 51 additions and 257 deletions

View File

@ -30,15 +30,6 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_netdev_queue_stopped,
debugfs_netdev_queue_stopped_get, debugfs_netdev_queue_stopped_get,
NULL, "%llu\n"); NULL, "%llu\n");
static
struct dentry *debugfs_create_netdev_queue_stopped(
const char *name, struct dentry *parent, struct i2400m *i2400m)
{
return debugfs_create_file(name, 0400, parent, i2400m,
&fops_netdev_queue_stopped);
}
/* /*
* We don't allow partial reads of this file, as then the reader would * We don't allow partial reads of this file, as then the reader would
* get weirdly confused data as it is updated. * get weirdly confused data as it is updated.
@ -167,15 +158,6 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_i2400m_suspend,
NULL, debugfs_i2400m_suspend_set, NULL, debugfs_i2400m_suspend_set,
"%llu\n"); "%llu\n");
static
struct dentry *debugfs_create_i2400m_suspend(
const char *name, struct dentry *parent, struct i2400m *i2400m)
{
return debugfs_create_file(name, 0200, parent, i2400m,
&fops_i2400m_suspend);
}
/* /*
* Reset the device * Reset the device
* *
@ -205,73 +187,25 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_i2400m_reset,
NULL, debugfs_i2400m_reset_set, NULL, debugfs_i2400m_reset_set,
"%llu\n"); "%llu\n");
static void i2400m_debugfs_add(struct i2400m *i2400m)
struct dentry *debugfs_create_i2400m_reset(
const char *name, struct dentry *parent, struct i2400m *i2400m)
{ {
return debugfs_create_file(name, 0200, parent, i2400m,
&fops_i2400m_reset);
}
#define __debugfs_register(prefix, name, parent) \
do { \
result = d_level_register_debugfs(prefix, name, parent); \
if (result < 0) \
goto error; \
} while (0)
int i2400m_debugfs_add(struct i2400m *i2400m)
{
int result;
struct device *dev = i2400m_dev(i2400m);
struct dentry *dentry = i2400m->wimax_dev.debugfs_dentry; struct dentry *dentry = i2400m->wimax_dev.debugfs_dentry;
struct dentry *fd;
dentry = debugfs_create_dir("i2400m", dentry); dentry = debugfs_create_dir("i2400m", dentry);
result = PTR_ERR(dentry);
if (IS_ERR(dentry)) {
if (result == -ENODEV)
result = 0; /* No debugfs support */
goto error;
}
i2400m->debugfs_dentry = dentry; i2400m->debugfs_dentry = dentry;
__debugfs_register("dl_", control, dentry);
__debugfs_register("dl_", driver, dentry);
__debugfs_register("dl_", debugfs, dentry);
__debugfs_register("dl_", fw, dentry);
__debugfs_register("dl_", netdev, dentry);
__debugfs_register("dl_", rfkill, dentry);
__debugfs_register("dl_", rx, dentry);
__debugfs_register("dl_", tx, dentry);
fd = debugfs_create_size_t("tx_in", 0400, dentry, d_level_register_debugfs("dl_", control, dentry);
&i2400m->tx_in); d_level_register_debugfs("dl_", driver, dentry);
result = PTR_ERR(fd); d_level_register_debugfs("dl_", debugfs, dentry);
if (IS_ERR(fd) && result != -ENODEV) { d_level_register_debugfs("dl_", fw, dentry);
dev_err(dev, "Can't create debugfs entry " d_level_register_debugfs("dl_", netdev, dentry);
"tx_in: %d\n", result); d_level_register_debugfs("dl_", rfkill, dentry);
goto error; d_level_register_debugfs("dl_", rx, dentry);
} d_level_register_debugfs("dl_", tx, dentry);
fd = debugfs_create_size_t("tx_out", 0400, dentry, debugfs_create_size_t("tx_in", 0400, dentry, &i2400m->tx_in);
&i2400m->tx_out); debugfs_create_size_t("tx_out", 0400, dentry, &i2400m->tx_out);
result = PTR_ERR(fd); debugfs_create_u32("state", 0600, dentry, &i2400m->state);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry "
"tx_out: %d\n", result);
goto error;
}
fd = debugfs_create_u32("state", 0600, dentry,
&i2400m->state);
result = PTR_ERR(fd);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry "
"state: %d\n", result);
goto error;
}
/* /*
* Trace received messages from user space * Trace received messages from user space
@ -295,60 +229,22 @@ int i2400m_debugfs_add(struct i2400m *i2400m)
* It is not really very atomic, but it is also not too * It is not really very atomic, but it is also not too
* critical. * critical.
*/ */
fd = debugfs_create_u8("trace_msg_from_user", 0600, dentry, debugfs_create_u8("trace_msg_from_user", 0600, dentry,
&i2400m->trace_msg_from_user); &i2400m->trace_msg_from_user);
result = PTR_ERR(fd);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry "
"trace_msg_from_user: %d\n", result);
goto error;
}
fd = debugfs_create_netdev_queue_stopped("netdev_queue_stopped", debugfs_create_file("netdev_queue_stopped", 0400, dentry, i2400m,
dentry, i2400m); &fops_netdev_queue_stopped);
result = PTR_ERR(fd);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry "
"netdev_queue_stopped: %d\n", result);
goto error;
}
fd = debugfs_create_file("rx_stats", 0600, dentry, i2400m, debugfs_create_file("rx_stats", 0600, dentry, i2400m,
&i2400m_rx_stats_fops); &i2400m_rx_stats_fops);
result = PTR_ERR(fd);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry "
"rx_stats: %d\n", result);
goto error;
}
fd = debugfs_create_file("tx_stats", 0600, dentry, i2400m, debugfs_create_file("tx_stats", 0600, dentry, i2400m,
&i2400m_tx_stats_fops); &i2400m_tx_stats_fops);
result = PTR_ERR(fd);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry "
"tx_stats: %d\n", result);
goto error;
}
fd = debugfs_create_i2400m_suspend("suspend", dentry, i2400m); debugfs_create_file("suspend", 0200, dentry, i2400m,
result = PTR_ERR(fd); &fops_i2400m_suspend);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry suspend: %d\n",
result);
goto error;
}
fd = debugfs_create_i2400m_reset("reset", dentry, i2400m); debugfs_create_file("reset", 0200, dentry, i2400m, &fops_i2400m_reset);
result = PTR_ERR(fd);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry reset: %d\n", result);
goto error;
}
result = 0;
error:
return result;
} }
void i2400m_debugfs_rm(struct i2400m *i2400m) void i2400m_debugfs_rm(struct i2400m *i2400m)

View File

@ -905,11 +905,7 @@ int i2400m_setup(struct i2400m *i2400m, enum i2400m_bri bm_flags)
goto error_sysfs_setup; goto error_sysfs_setup;
} }
result = i2400m_debugfs_add(i2400m); i2400m_debugfs_add(i2400m);
if (result < 0) {
dev_err(dev, "cannot setup i2400m's debugfs: %d\n", result);
goto error_debugfs_setup;
}
result = i2400m_dev_start(i2400m, bm_flags); result = i2400m_dev_start(i2400m, bm_flags);
if (result < 0) if (result < 0)
@ -919,7 +915,6 @@ int i2400m_setup(struct i2400m *i2400m, enum i2400m_bri bm_flags)
error_dev_start: error_dev_start:
i2400m_debugfs_rm(i2400m); i2400m_debugfs_rm(i2400m);
error_debugfs_setup:
sysfs_remove_group(&i2400m->wimax_dev.net_dev->dev.kobj, sysfs_remove_group(&i2400m->wimax_dev.net_dev->dev.kobj,
&i2400m_dev_attr_group); &i2400m_dev_attr_group);
error_sysfs_setup: error_sysfs_setup:

View File

@ -812,13 +812,10 @@ enum i2400m_pt;
int i2400m_tx(struct i2400m *, const void *, size_t, enum i2400m_pt); int i2400m_tx(struct i2400m *, const void *, size_t, enum i2400m_pt);
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
int i2400m_debugfs_add(struct i2400m *); void i2400m_debugfs_add(struct i2400m *);
void i2400m_debugfs_rm(struct i2400m *); void i2400m_debugfs_rm(struct i2400m *);
#else #else
static inline int i2400m_debugfs_add(struct i2400m *i2400m) static inline void i2400m_debugfs_add(struct i2400m *i2400m) {}
{
return 0;
}
static inline void i2400m_debugfs_rm(struct i2400m *i2400m) {} static inline void i2400m_debugfs_rm(struct i2400m *i2400m) {}
#endif #endif

View File

@ -366,61 +366,25 @@ struct d_level D_LEVEL[] = {
}; };
size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL); size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL);
#define __debugfs_register(prefix, name, parent) \
do { \
result = d_level_register_debugfs(prefix, name, parent); \
if (result < 0) \
goto error; \
} while (0)
static static
int i2400mu_debugfs_add(struct i2400mu *i2400mu) void i2400mu_debugfs_add(struct i2400mu *i2400mu)
{ {
int result;
struct device *dev = &i2400mu->usb_iface->dev;
struct dentry *dentry = i2400mu->i2400m.wimax_dev.debugfs_dentry; struct dentry *dentry = i2400mu->i2400m.wimax_dev.debugfs_dentry;
struct dentry *fd;
dentry = debugfs_create_dir("i2400m-usb", dentry); dentry = debugfs_create_dir("i2400m-usb", dentry);
result = PTR_ERR(dentry);
if (IS_ERR(dentry)) {
if (result == -ENODEV)
result = 0; /* No debugfs support */
goto error;
}
i2400mu->debugfs_dentry = dentry; i2400mu->debugfs_dentry = dentry;
__debugfs_register("dl_", usb, dentry);
__debugfs_register("dl_", fw, dentry); d_level_register_debugfs("dl_", usb, dentry);
__debugfs_register("dl_", notif, dentry); d_level_register_debugfs("dl_", fw, dentry);
__debugfs_register("dl_", rx, dentry); d_level_register_debugfs("dl_", notif, dentry);
__debugfs_register("dl_", tx, dentry); d_level_register_debugfs("dl_", rx, dentry);
d_level_register_debugfs("dl_", tx, dentry);
/* Don't touch these if you don't know what you are doing */ /* Don't touch these if you don't know what you are doing */
fd = debugfs_create_u8("rx_size_auto_shrink", 0600, dentry, debugfs_create_u8("rx_size_auto_shrink", 0600, dentry,
&i2400mu->rx_size_auto_shrink); &i2400mu->rx_size_auto_shrink);
result = PTR_ERR(fd);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry "
"rx_size_auto_shrink: %d\n", result);
goto error;
}
fd = debugfs_create_size_t("rx_size", 0600, dentry, debugfs_create_size_t("rx_size", 0600, dentry, &i2400mu->rx_size);
&i2400mu->rx_size);
result = PTR_ERR(fd);
if (IS_ERR(fd) && result != -ENODEV) {
dev_err(dev, "Can't create debugfs entry "
"rx_size: %d\n", result);
goto error;
}
return 0;
error:
debugfs_remove_recursive(i2400mu->debugfs_dentry);
return result;
} }
@ -534,15 +498,9 @@ int i2400mu_probe(struct usb_interface *iface,
dev_err(dev, "cannot setup device: %d\n", result); dev_err(dev, "cannot setup device: %d\n", result);
goto error_setup; goto error_setup;
} }
result = i2400mu_debugfs_add(i2400mu); i2400mu_debugfs_add(i2400mu);
if (result < 0) {
dev_err(dev, "Can't register i2400mu's debugfs: %d\n", result);
goto error_debugfs_add;
}
return 0; return 0;
error_debugfs_add:
i2400m_release(i2400m);
error_setup: error_setup:
usb_set_intfdata(iface, NULL); usb_set_intfdata(iface, NULL);
usb_put_dev(i2400mu->usb_dev); usb_put_dev(i2400mu->usb_dev);

View File

@ -98,9 +98,7 @@
* To manipulate from user space the levels, create a debugfs dentry * To manipulate from user space the levels, create a debugfs dentry
* and then register each submodule with: * and then register each submodule with:
* *
* result = d_level_register_debugfs("PREFIX_", submodule_X, parent); * d_level_register_debugfs("PREFIX_", submodule_X, parent);
* if (result < 0)
* goto error;
* *
* Where PREFIX_ is a name of your chosing. This will create debugfs * Where PREFIX_ is a name of your chosing. This will create debugfs
* file with a single numeric value that can be use to tweak it. To * file with a single numeric value that can be use to tweak it. To
@ -408,25 +406,13 @@ do { \
* @submodule: name of submodule (not a string, just the name) * @submodule: name of submodule (not a string, just the name)
* @dentry: debugfs parent dentry * @dentry: debugfs parent dentry
* *
* Returns: 0 if ok, < 0 errno on error.
*
* For removing, just use debugfs_remove_recursive() on the parent. * For removing, just use debugfs_remove_recursive() on the parent.
*/ */
#define d_level_register_debugfs(prefix, name, parent) \ #define d_level_register_debugfs(prefix, name, parent) \
({ \ ({ \
int rc; \ debugfs_create_u8( \
struct dentry *fd; \ prefix #name, 0600, parent, \
struct dentry *verify_parent_type = parent; \
fd = debugfs_create_u8( \
prefix #name, 0600, verify_parent_type, \
&(D_LEVEL[__D_SUBMODULE_ ## name].level)); \ &(D_LEVEL[__D_SUBMODULE_ ## name].level)); \
rc = PTR_ERR(fd); \
if (IS_ERR(fd) && rc != -ENODEV) \
printk(KERN_ERR "%s: Can't create debugfs entry %s: " \
"%d\n", __func__, prefix #name, rc); \
else \
rc = 0; \
rc; \
}) })

View File

@ -13,49 +13,23 @@
#define D_SUBMODULE debugfs #define D_SUBMODULE debugfs
#include "debug-levels.h" #include "debug-levels.h"
void wimax_debugfs_add(struct wimax_dev *wimax_dev)
#define __debugfs_register(prefix, name, parent) \
do { \
result = d_level_register_debugfs(prefix, name, parent); \
if (result < 0) \
goto error; \
} while (0)
int wimax_debugfs_add(struct wimax_dev *wimax_dev)
{ {
int result;
struct net_device *net_dev = wimax_dev->net_dev; struct net_device *net_dev = wimax_dev->net_dev;
struct device *dev = net_dev->dev.parent;
struct dentry *dentry; struct dentry *dentry;
char buf[128]; char buf[128];
snprintf(buf, sizeof(buf), "wimax:%s", net_dev->name); snprintf(buf, sizeof(buf), "wimax:%s", net_dev->name);
dentry = debugfs_create_dir(buf, NULL); dentry = debugfs_create_dir(buf, NULL);
result = PTR_ERR(dentry);
if (IS_ERR(dentry)) {
if (result == -ENODEV)
result = 0; /* No debugfs support */
else
dev_err(dev, "Can't create debugfs dentry: %d\n",
result);
goto out;
}
wimax_dev->debugfs_dentry = dentry; wimax_dev->debugfs_dentry = dentry;
__debugfs_register("wimax_dl_", debugfs, dentry);
__debugfs_register("wimax_dl_", id_table, dentry);
__debugfs_register("wimax_dl_", op_msg, dentry);
__debugfs_register("wimax_dl_", op_reset, dentry);
__debugfs_register("wimax_dl_", op_rfkill, dentry);
__debugfs_register("wimax_dl_", op_state_get, dentry);
__debugfs_register("wimax_dl_", stack, dentry);
result = 0;
out:
return result;
error: d_level_register_debugfs("wimax_dl_", debugfs, dentry);
debugfs_remove_recursive(wimax_dev->debugfs_dentry); d_level_register_debugfs("wimax_dl_", id_table, dentry);
return result; d_level_register_debugfs("wimax_dl_", op_msg, dentry);
d_level_register_debugfs("wimax_dl_", op_reset, dentry);
d_level_register_debugfs("wimax_dl_", op_rfkill, dentry);
d_level_register_debugfs("wimax_dl_", op_state_get, dentry);
d_level_register_debugfs("wimax_dl_", stack, dentry);
} }
void wimax_debugfs_rm(struct wimax_dev *wimax_dev) void wimax_debugfs_rm(struct wimax_dev *wimax_dev)

View File

@ -481,12 +481,7 @@ int wimax_dev_add(struct wimax_dev *wimax_dev, struct net_device *net_dev)
/* Set up user-space interaction */ /* Set up user-space interaction */
mutex_lock(&wimax_dev->mutex); mutex_lock(&wimax_dev->mutex);
wimax_id_table_add(wimax_dev); wimax_id_table_add(wimax_dev);
result = wimax_debugfs_add(wimax_dev); wimax_debugfs_add(wimax_dev);
if (result < 0) {
dev_err(dev, "cannot initialize debugfs: %d\n",
result);
goto error_debugfs_add;
}
__wimax_state_set(wimax_dev, WIMAX_ST_DOWN); __wimax_state_set(wimax_dev, WIMAX_ST_DOWN);
mutex_unlock(&wimax_dev->mutex); mutex_unlock(&wimax_dev->mutex);
@ -498,10 +493,6 @@ int wimax_dev_add(struct wimax_dev *wimax_dev, struct net_device *net_dev)
d_fnend(3, dev, "(wimax_dev %p net_dev %p) = 0\n", wimax_dev, net_dev); d_fnend(3, dev, "(wimax_dev %p net_dev %p) = 0\n", wimax_dev, net_dev);
return 0; return 0;
error_debugfs_add:
wimax_id_table_rm(wimax_dev);
mutex_unlock(&wimax_dev->mutex);
wimax_rfkill_rm(wimax_dev);
error_rfkill_add: error_rfkill_add:
d_fnend(3, dev, "(wimax_dev %p net_dev %p) = %d\n", d_fnend(3, dev, "(wimax_dev %p net_dev %p) = %d\n",
wimax_dev, net_dev, result); wimax_dev, net_dev, result);

View File

@ -57,13 +57,10 @@ void __wimax_state_set(struct wimax_dev *wimax_dev, enum wimax_st state)
void __wimax_state_change(struct wimax_dev *, enum wimax_st); void __wimax_state_change(struct wimax_dev *, enum wimax_st);
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
int wimax_debugfs_add(struct wimax_dev *); void wimax_debugfs_add(struct wimax_dev *);
void wimax_debugfs_rm(struct wimax_dev *); void wimax_debugfs_rm(struct wimax_dev *);
#else #else
static inline int wimax_debugfs_add(struct wimax_dev *wimax_dev) static inline void wimax_debugfs_add(struct wimax_dev *wimax_dev) {}
{
return 0;
}
static inline void wimax_debugfs_rm(struct wimax_dev *wimax_dev) {} static inline void wimax_debugfs_rm(struct wimax_dev *wimax_dev) {}
#endif #endif