Commit 1dc24406 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman Committed by Kalle Valo

rt2x00: 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.

Because we don't need to save the individual debugfs files and
directories, remove the local storage of them and just remove the entire
debugfs directory in a single call, making things a lot simpler.

Cc: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Helmut Schaa <helmut.schaa@googlemail.com>
Cc: Kalle Valo <kvalo@codeaurora.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 3b902fa8
...@@ -65,26 +65,6 @@ struct rt2x00debug_intf { ...@@ -65,26 +65,6 @@ struct rt2x00debug_intf {
* - crypto stats file * - crypto stats file
*/ */
struct dentry *driver_folder; struct dentry *driver_folder;
struct dentry *driver_entry;
struct dentry *chipset_entry;
struct dentry *dev_flags;
struct dentry *cap_flags;
struct dentry *restart_hw;
struct dentry *register_folder;
struct dentry *csr_off_entry;
struct dentry *csr_val_entry;
struct dentry *eeprom_off_entry;
struct dentry *eeprom_val_entry;
struct dentry *bbp_off_entry;
struct dentry *bbp_val_entry;
struct dentry *rf_off_entry;
struct dentry *rf_val_entry;
struct dentry *rfcsr_off_entry;
struct dentry *rfcsr_val_entry;
struct dentry *queue_folder;
struct dentry *queue_frame_dump_entry;
struct dentry *queue_stats_entry;
struct dentry *crypto_stats_entry;
/* /*
* The frame dump file only allows a single reader, * The frame dump file only allows a single reader,
...@@ -596,39 +576,34 @@ static const struct file_operations rt2x00debug_restart_hw = { ...@@ -596,39 +576,34 @@ static const struct file_operations rt2x00debug_restart_hw = {
.llseek = generic_file_llseek, .llseek = generic_file_llseek,
}; };
static struct dentry *rt2x00debug_create_file_driver(const char *name, static void rt2x00debug_create_file_driver(const char *name,
struct rt2x00debug_intf struct rt2x00debug_intf *intf,
*intf, struct debugfs_blob_wrapper *blob)
struct debugfs_blob_wrapper
*blob)
{ {
char *data; char *data;
data = kzalloc(3 * MAX_LINE_LENGTH, GFP_KERNEL); data = kzalloc(3 * MAX_LINE_LENGTH, GFP_KERNEL);
if (!data) if (!data)
return NULL; return;
blob->data = data; blob->data = data;
data += sprintf(data, "driver:\t%s\n", intf->rt2x00dev->ops->name); data += sprintf(data, "driver:\t%s\n", intf->rt2x00dev->ops->name);
data += sprintf(data, "version:\t%s\n", DRV_VERSION); data += sprintf(data, "version:\t%s\n", DRV_VERSION);
blob->size = strlen(blob->data); blob->size = strlen(blob->data);
return debugfs_create_blob(name, 0400, intf->driver_folder, blob); debugfs_create_blob(name, 0400, intf->driver_folder, blob);
} }
static struct dentry *rt2x00debug_create_file_chipset(const char *name, static void rt2x00debug_create_file_chipset(const char *name,
struct rt2x00debug_intf struct rt2x00debug_intf *intf,
*intf, struct debugfs_blob_wrapper *blob)
struct
debugfs_blob_wrapper
*blob)
{ {
const struct rt2x00debug *debug = intf->debug; const struct rt2x00debug *debug = intf->debug;
char *data; char *data;
data = kzalloc(9 * MAX_LINE_LENGTH, GFP_KERNEL); data = kzalloc(9 * MAX_LINE_LENGTH, GFP_KERNEL);
if (!data) if (!data)
return NULL; return;
blob->data = data; blob->data = data;
data += sprintf(data, "rt chip:\t%04x\n", intf->rt2x00dev->chip.rt); data += sprintf(data, "rt chip:\t%04x\n", intf->rt2x00dev->chip.rt);
...@@ -654,13 +629,15 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name, ...@@ -654,13 +629,15 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name,
blob->size = strlen(blob->data); blob->size = strlen(blob->data);
return debugfs_create_blob(name, 0400, intf->driver_folder, blob); debugfs_create_blob(name, 0400, intf->driver_folder, blob);
} }
void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
{ {
const struct rt2x00debug *debug = rt2x00dev->ops->debugfs; const struct rt2x00debug *debug = rt2x00dev->ops->debugfs;
struct rt2x00debug_intf *intf; struct rt2x00debug_intf *intf;
struct dentry *queue_folder;
struct dentry *register_folder;
intf = kzalloc(sizeof(struct rt2x00debug_intf), GFP_KERNEL); intf = kzalloc(sizeof(struct rt2x00debug_intf), GFP_KERNEL);
if (!intf) { if (!intf) {
...@@ -676,43 +653,27 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) ...@@ -676,43 +653,27 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
debugfs_create_dir(intf->rt2x00dev->ops->name, debugfs_create_dir(intf->rt2x00dev->ops->name,
rt2x00dev->hw->wiphy->debugfsdir); rt2x00dev->hw->wiphy->debugfsdir);
intf->driver_entry = rt2x00debug_create_file_driver("driver", intf, &intf->driver_blob);
rt2x00debug_create_file_driver("driver", intf, &intf->driver_blob); rt2x00debug_create_file_chipset("chipset", intf, &intf->chipset_blob);
debugfs_create_file("dev_flags", 0400, intf->driver_folder, intf,
&rt2x00debug_fop_dev_flags);
debugfs_create_file("cap_flags", 0400, intf->driver_folder, intf,
&rt2x00debug_fop_cap_flags);
debugfs_create_file("restart_hw", 0200, intf->driver_folder, intf,
&rt2x00debug_restart_hw);
intf->chipset_entry = register_folder = debugfs_create_dir("register", intf->driver_folder);
rt2x00debug_create_file_chipset("chipset",
intf, &intf->chipset_blob);
intf->dev_flags = debugfs_create_file("dev_flags", 0400,
intf->driver_folder, intf,
&rt2x00debug_fop_dev_flags);
intf->cap_flags = debugfs_create_file("cap_flags", 0400,
intf->driver_folder, intf,
&rt2x00debug_fop_cap_flags);
intf->restart_hw = debugfs_create_file("restart_hw", 0200,
intf->driver_folder, intf,
&rt2x00debug_restart_hw);
intf->register_folder =
debugfs_create_dir("register", intf->driver_folder);
#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name) \ #define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name) \
({ \ ({ \
if (debug->__name.read) { \ if (debug->__name.read) { \
(__intf)->__name##_off_entry = \ debugfs_create_u32(__stringify(__name) "_offset", 0600, \
debugfs_create_u32(__stringify(__name) "_offset", \ register_folder, \
0600, \ &(__intf)->offset_##__name); \
(__intf)->register_folder, \
&(__intf)->offset_##__name); \
\ \
(__intf)->__name##_val_entry = \ debugfs_create_file(__stringify(__name) "_value", 0600, \
debugfs_create_file(__stringify(__name) "_value", \ register_folder, (__intf), \
0600, \ &rt2x00debug_fop_##__name); \
(__intf)->register_folder, \
(__intf), \
&rt2x00debug_fop_##__name); \
} \ } \
}) })
...@@ -724,26 +685,21 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) ...@@ -724,26 +685,21 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
#undef RT2X00DEBUGFS_CREATE_REGISTER_ENTRY #undef RT2X00DEBUGFS_CREATE_REGISTER_ENTRY
intf->queue_folder = queue_folder = debugfs_create_dir("queue", intf->driver_folder);
debugfs_create_dir("queue", intf->driver_folder);
intf->queue_frame_dump_entry = debugfs_create_file("dump", 0400, queue_folder, intf,
debugfs_create_file("dump", 0400, intf->queue_folder, &rt2x00debug_fop_queue_dump);
intf, &rt2x00debug_fop_queue_dump);
skb_queue_head_init(&intf->frame_dump_skbqueue); skb_queue_head_init(&intf->frame_dump_skbqueue);
init_waitqueue_head(&intf->frame_dump_waitqueue); init_waitqueue_head(&intf->frame_dump_waitqueue);
intf->queue_stats_entry = debugfs_create_file("queue", 0400, queue_folder, intf,
debugfs_create_file("queue", 0400, intf->queue_folder, &rt2x00debug_fop_queue_stats);
intf, &rt2x00debug_fop_queue_stats);
#ifdef CONFIG_RT2X00_LIB_CRYPTO #ifdef CONFIG_RT2X00_LIB_CRYPTO
if (rt2x00_has_cap_hw_crypto(rt2x00dev)) if (rt2x00_has_cap_hw_crypto(rt2x00dev))
intf->crypto_stats_entry = debugfs_create_file("crypto", 0444, queue_folder, intf,
debugfs_create_file("crypto", 0444, intf->queue_folder, &rt2x00debug_fop_crypto_stats);
intf,
&rt2x00debug_fop_crypto_stats);
#endif #endif
return; return;
...@@ -758,29 +714,7 @@ void rt2x00debug_deregister(struct rt2x00_dev *rt2x00dev) ...@@ -758,29 +714,7 @@ void rt2x00debug_deregister(struct rt2x00_dev *rt2x00dev)
skb_queue_purge(&intf->frame_dump_skbqueue); skb_queue_purge(&intf->frame_dump_skbqueue);
#ifdef CONFIG_RT2X00_LIB_CRYPTO debugfs_remove_recursive(intf->driver_folder);
debugfs_remove(intf->crypto_stats_entry);
#endif
debugfs_remove(intf->queue_stats_entry);
debugfs_remove(intf->queue_frame_dump_entry);
debugfs_remove(intf->queue_folder);
debugfs_remove(intf->rfcsr_val_entry);
debugfs_remove(intf->rfcsr_off_entry);
debugfs_remove(intf->rf_val_entry);
debugfs_remove(intf->rf_off_entry);
debugfs_remove(intf->bbp_val_entry);
debugfs_remove(intf->bbp_off_entry);
debugfs_remove(intf->eeprom_val_entry);
debugfs_remove(intf->eeprom_off_entry);
debugfs_remove(intf->csr_val_entry);
debugfs_remove(intf->csr_off_entry);
debugfs_remove(intf->register_folder);
debugfs_remove(intf->dev_flags);
debugfs_remove(intf->restart_hw);
debugfs_remove(intf->cap_flags);
debugfs_remove(intf->chipset_entry);
debugfs_remove(intf->driver_entry);
debugfs_remove(intf->driver_folder);
kfree(intf->chipset_blob.data); kfree(intf->chipset_blob.data);
kfree(intf->driver_blob.data); kfree(intf->driver_blob.data);
kfree(intf); kfree(intf);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment