diff options
author | David Howells <dhowells@redhat.com> | 2013-04-11 22:05:20 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-05-01 17:29:42 -0400 |
commit | b25f774d889e3856c6d81ffc679912f8bdef6adc (patch) | |
tree | df79402b5860589f662a8aaf8a7eba99e88404fb /drivers/net/wireless/airo.c | |
parent | cc87e0fff1e639c4c7832075b8cdd89ab30d2a1f (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.c | 49 |
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 | ||
4569 | fail_wepkey: | ||
4570 | remove_proc_entry("BSSList", apriv->proc_entry); | ||
4571 | fail_bsslist: | ||
4572 | remove_proc_entry("APList", apriv->proc_entry); | ||
4573 | fail_aplist: | ||
4574 | remove_proc_entry("SSID", apriv->proc_entry); | ||
4575 | fail_ssid: | ||
4576 | remove_proc_entry("Config", apriv->proc_entry); | ||
4577 | fail_config: | ||
4578 | remove_proc_entry("Status", apriv->proc_entry); | ||
4579 | fail_status: | ||
4580 | remove_proc_entry("Stats", apriv->proc_entry); | ||
4581 | fail_stats: | ||
4582 | remove_proc_entry("StatsDelta", apriv->proc_entry); | ||
4583 | fail_stats_delta: | ||
4584 | remove_proc_entry(apriv->proc_name, airo_entry); | ||
4585 | fail: | 4569 | fail: |
4570 | remove_proc_subtree(apriv->proc_name, airo_entry); | ||
4586 | return -ENOMEM; | 4571 | return -ENOMEM; |
4587 | } | 4572 | } |
4588 | 4573 | ||
4589 | static int takedown_proc_entry( struct net_device *dev, | 4574 | static 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 | ||