aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/airo.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2013-04-11 22:05:20 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2013-05-01 17:29:42 -0400
commitb25f774d889e3856c6d81ffc679912f8bdef6adc (patch)
treedf79402b5860589f662a8aaf8a7eba99e88404fb /drivers/net/wireless/airo.c
parentcc87e0fff1e639c4c7832075b8cdd89ab30d2a1f (diff)
airo: Use remove_proc_subtree()
Use remove_proc_subtree() to remove the airo device subdir and all its children instead of doing it manually. Signed-off-by: David Howells <dhowells@redhat.com> cc: linux-wireless@vger.kernel.org Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/net/wireless/airo.c')
-rw-r--r--drivers/net/wireless/airo.c49
1 files changed, 13 insertions, 36 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 21d02335b46f..6125adb520a3 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -4506,98 +4506,75 @@ static int setup_proc_entry( struct net_device *dev,
4506 apriv->proc_entry = proc_mkdir_mode(apriv->proc_name, airo_perm, 4506 apriv->proc_entry = proc_mkdir_mode(apriv->proc_name, airo_perm,
4507 airo_entry); 4507 airo_entry);
4508 if (!apriv->proc_entry) 4508 if (!apriv->proc_entry)
4509 goto fail; 4509 return -ENOMEM;
4510 proc_set_user(apriv->proc_entry, proc_kuid, proc_kgid); 4510 proc_set_user(apriv->proc_entry, proc_kuid, proc_kgid);
4511 4511
4512 /* Setup the StatsDelta */ 4512 /* Setup the StatsDelta */
4513 entry = proc_create_data("StatsDelta", S_IRUGO & proc_perm, 4513 entry = proc_create_data("StatsDelta", S_IRUGO & proc_perm,
4514 apriv->proc_entry, &proc_statsdelta_ops, dev); 4514 apriv->proc_entry, &proc_statsdelta_ops, dev);
4515 if (!entry) 4515 if (!entry)
4516 goto fail_stats_delta; 4516 goto fail;
4517 proc_set_user(entry, proc_kuid, proc_kgid); 4517 proc_set_user(entry, proc_kuid, proc_kgid);
4518 4518
4519 /* Setup the Stats */ 4519 /* Setup the Stats */
4520 entry = proc_create_data("Stats", S_IRUGO & proc_perm, 4520 entry = proc_create_data("Stats", S_IRUGO & proc_perm,
4521 apriv->proc_entry, &proc_stats_ops, dev); 4521 apriv->proc_entry, &proc_stats_ops, dev);
4522 if (!entry) 4522 if (!entry)
4523 goto fail_stats; 4523 goto fail;
4524 proc_set_user(entry, proc_kuid, proc_kgid); 4524 proc_set_user(entry, proc_kuid, proc_kgid);
4525 4525
4526 /* Setup the Status */ 4526 /* Setup the Status */
4527 entry = proc_create_data("Status", S_IRUGO & proc_perm, 4527 entry = proc_create_data("Status", S_IRUGO & proc_perm,
4528 apriv->proc_entry, &proc_status_ops, dev); 4528 apriv->proc_entry, &proc_status_ops, dev);
4529 if (!entry) 4529 if (!entry)
4530 goto fail_status; 4530 goto fail;
4531 proc_set_user(entry, proc_kuid, proc_kgid); 4531 proc_set_user(entry, proc_kuid, proc_kgid);
4532 4532
4533 /* Setup the Config */ 4533 /* Setup the Config */
4534 entry = proc_create_data("Config", proc_perm, 4534 entry = proc_create_data("Config", proc_perm,
4535 apriv->proc_entry, &proc_config_ops, dev); 4535 apriv->proc_entry, &proc_config_ops, dev);
4536 if (!entry) 4536 if (!entry)
4537 goto fail_config; 4537 goto fail;
4538 proc_set_user(entry, proc_kuid, proc_kgid); 4538 proc_set_user(entry, proc_kuid, proc_kgid);
4539 4539
4540 /* Setup the SSID */ 4540 /* Setup the SSID */
4541 entry = proc_create_data("SSID", proc_perm, 4541 entry = proc_create_data("SSID", proc_perm,
4542 apriv->proc_entry, &proc_SSID_ops, dev); 4542 apriv->proc_entry, &proc_SSID_ops, dev);
4543 if (!entry) 4543 if (!entry)
4544 goto fail_ssid; 4544 goto fail;
4545 proc_set_user(entry, proc_kuid, proc_kgid); 4545 proc_set_user(entry, proc_kuid, proc_kgid);
4546 4546
4547 /* Setup the APList */ 4547 /* Setup the APList */
4548 entry = proc_create_data("APList", proc_perm, 4548 entry = proc_create_data("APList", proc_perm,
4549 apriv->proc_entry, &proc_APList_ops, dev); 4549 apriv->proc_entry, &proc_APList_ops, dev);
4550 if (!entry) 4550 if (!entry)
4551 goto fail_aplist; 4551 goto fail;
4552 proc_set_user(entry, proc_kuid, proc_kgid); 4552 proc_set_user(entry, proc_kuid, proc_kgid);
4553 4553
4554 /* Setup the BSSList */ 4554 /* Setup the BSSList */
4555 entry = proc_create_data("BSSList", proc_perm, 4555 entry = proc_create_data("BSSList", proc_perm,
4556 apriv->proc_entry, &proc_BSSList_ops, dev); 4556 apriv->proc_entry, &proc_BSSList_ops, dev);
4557 if (!entry) 4557 if (!entry)
4558 goto fail_bsslist; 4558 goto fail;
4559 proc_set_user(entry, proc_kuid, proc_kgid); 4559 proc_set_user(entry, proc_kuid, proc_kgid);
4560 4560
4561 /* Setup the WepKey */ 4561 /* Setup the WepKey */
4562 entry = proc_create_data("WepKey", proc_perm, 4562 entry = proc_create_data("WepKey", proc_perm,
4563 apriv->proc_entry, &proc_wepkey_ops, dev); 4563 apriv->proc_entry, &proc_wepkey_ops, dev);
4564 if (!entry) 4564 if (!entry)
4565 goto fail_wepkey; 4565 goto fail;
4566 proc_set_user(entry, proc_kuid, proc_kgid); 4566 proc_set_user(entry, proc_kuid, proc_kgid);
4567 return 0; 4567 return 0;
4568 4568
4569fail_wepkey:
4570 remove_proc_entry("BSSList", apriv->proc_entry);
4571fail_bsslist:
4572 remove_proc_entry("APList", apriv->proc_entry);
4573fail_aplist:
4574 remove_proc_entry("SSID", apriv->proc_entry);
4575fail_ssid:
4576 remove_proc_entry("Config", apriv->proc_entry);
4577fail_config:
4578 remove_proc_entry("Status", apriv->proc_entry);
4579fail_status:
4580 remove_proc_entry("Stats", apriv->proc_entry);
4581fail_stats:
4582 remove_proc_entry("StatsDelta", apriv->proc_entry);
4583fail_stats_delta:
4584 remove_proc_entry(apriv->proc_name, airo_entry);
4585fail: 4569fail:
4570 remove_proc_subtree(apriv->proc_name, airo_entry);
4586 return -ENOMEM; 4571 return -ENOMEM;
4587} 4572}
4588 4573
4589static int takedown_proc_entry( struct net_device *dev, 4574static int takedown_proc_entry( struct net_device *dev,
4590 struct airo_info *apriv ) { 4575 struct airo_info *apriv )
4591 if ( !apriv->proc_entry->namelen ) return 0; 4576{
4592 remove_proc_entry("Stats",apriv->proc_entry); 4577 remove_proc_subtree(apriv->proc_name, airo_entry);
4593 remove_proc_entry("StatsDelta",apriv->proc_entry);
4594 remove_proc_entry("Status",apriv->proc_entry);
4595 remove_proc_entry("Config",apriv->proc_entry);
4596 remove_proc_entry("SSID",apriv->proc_entry);
4597 remove_proc_entry("APList",apriv->proc_entry);
4598 remove_proc_entry("BSSList",apriv->proc_entry);
4599 remove_proc_entry("WepKey",apriv->proc_entry);
4600 remove_proc_entry(apriv->proc_name,airo_entry);
4601 return 0; 4578 return 0;
4602} 4579}
4603 4580